com.docomostar.device.location
クラス AccelerationSensor

Object
  上位を拡張 com.docomostar.device.location.AccelerationSensor

public class AccelerationSensor
extends Object
 [iアプリオプションAPI]

加速度センサ機能を提供します。

加速度センサ機能は、基本機能として加速度を取得する機能を提供します。 加速度センサ機能が計測できる加速度そのもの、 およびその値を変換して得られる値(ロール角、ピッチ角)を取得できます。 また、画面の縦横の向き等を取得できます。 ただし、実装によって取得可能な値は異なります。 計測データの種類については、 AccelerationDataクラスを参照してください。
加速度取得機能では、現在の加速度値を得るワンショット計測と、 周期的に連続して加速度値を得る周期計測を提供します。 周期計測では、実装内部の計測データ蓄積バッファに計測結果を蓄積します。 アプリケーションは、周期計測中あるいは計測後に蓄積バッファ内の計測結果を取得できます。

計測結果は、AccelerationData オブジェクトを介して取得できます。 AccelerationData オブジェクトは ワンショット計測用、 周期計測(全データ)用、 周期計測(最新データ)用に各 1 つずつ生成され、 計測結果は各オブジェクトが保持する配列に格納されます。

加速度センサ機能は、オプション機能としてイベント検知機能を提供します。 イベント検知機能は、 画面の縦横の向きの変化、ダブルタップした位置等を検知し、イベントとして通知します。 実装によってはイベント検知機能をサポートしないことがあります。 また、実装によって検知可能なイベントは異なります。

周期計測中またはイベント検知中にワンショット計測、 周期計測開始、イベント検知開始 を行うと例外が発生します。

加速度取得機能により 「ロール(roll)角」 「ピッチ(pitch)角」を取得することができますが、 「ヨー(yaw)角」に相当する値を知る必要がある場合は、 電子コンパス機能における方位角の値を利用して下さい。

実装によっては、加速度センサ機能をサポートしていない場合があります。
また、電子コンパス機能のサポート有無と、 加速度センサ機能のサポート有無は独立しており、 任意のサポート有無の組み合わせが有り得ることに注意して下さい。

[Star-1.3 以降]
端末によっては、デバイス ID を指定して加速度センサのインスタンスを取得できます。
デバイス ID が 0 以外の加速度センサは、常にアクセス可能とは限りません。 加速度センサにアクセスできるかどうかを確認するには isAccessible() メソッドを利用してください。 また、アクセス可否状態の変更を検知するには startEventDetection(EVENT_ACCESSIBILITY) メソッドを利用してください。
加速度センサのアクセス可否の状態と、周期計測の開始・停止状態は独立しています。 よって、加速度センサのアクセス可否状態が変更された場合でも、周期計測の開始・停止状態は変更されません。
加速度センサにアクセスできない場合、周期計測中でも測定結果蓄積バッファに結果は蓄積されません。 加速度センサにアクセスできるようになると、自動的に測定結果蓄積バッファへの結果の蓄積が再開されます。

導入されたバージョン:
Star-1.0

フィールドの概要
static int ACCELERATION_X
          計測データの種類を示す値で、X軸方向の加速度を表します。
static int ACCELERATION_Y
          計測データの種類を示す値で、Y軸方向の加速度を表します。
static int ACCELERATION_Z
          計測データの種類を示す値で、Z軸方向の加速度を表します。
static int ACCESSIBLE_FALSE
          加速度センサにアクセスが不可能になったことを表します(=1)。
static int ACCESSIBLE_TRUE
          加速度センサにアクセスが可能になったことを表します(=0)。
static int DOUBLE_TAP_BACK
          ダブルタップ時の位置を示す値で、端末の背面のダブルタップを表します。
static int DOUBLE_TAP_FRONT
          ダブルタップ時の位置を示す値で、端末のLCD面のダブルタップを表します。
static int DOUBLE_TAP_LEFT
          ダブルタップ時の位置を示す値で、端末の左側面のダブルタップを表します。
static int DOUBLE_TAP_RIGHT
          ダブルタップ時の位置を示す値で、端末の右側面のダブルタップを表します。
static int EVENT_ACCESSIBILITY
          イベント検知機能が検知可能なイベントの種類で、 加速度センサのアクセス可否が変更されたことを表します(=4)。
static int EVENT_DOUBLE_TAP
          イベント検知機能が検知可能なイベントの種類で、 ダブルタップ操作を表します。
static int EVENT_SCREEN_ORIENTATION
          イベント検知機能が検知可能なイベントの種類で、 画面の縦横の向きの変化を表します。
static int PITCH
          計測データの種類を示す値で、端末の傾き(ピッチ角)を表します。
static int ROLL
          計測データの種類を示す値で、端末の傾き(ロール角)を表します。
static int SCREEN_ORIENTATION
          計測データの種類を示す値で、メインスクリーンの縦横の向きを表します。
 
メソッドの概要
 void disposeData()
          周期計測用の蓄積バッファをクリアします。
static AccelerationSensor getAccelerationSensor()
          加速度センサ機能のインスタンスを返します。
static AccelerationSensor getAccelerationSensor(int id)
          使用するデバイスを指定して、加速度センサ機能のインスタンスを返します。
 int[] getAvailableData()
          実装がサポートしている計測データの種類を取得します。
 int[] getAvailableEvent()
          イベント検知機能 がサポートする検知イベントを返します。
 AccelerationData getCurrentData()
          現在の加速度を計測し、結果を取得します(ワンショット計測)。
 AccelerationData getData()
          周期計測用の蓄積データバッファから計測結果を取得します。
 int getDataSize()
          周期計測用の蓄積データバッファに蓄積されているデータ数を取得します。
 int getIntervalResolution()
          周期計測の計測間隔の解像度を取得します。
 int getMaxDataSize()
          周期計測において実装内部で蓄積可能な最大データ数を取得します。
 int getMaxDataValue(int type)
          計測データの最大値を取得します。
 int getMinDataValue(int type)
          計測データの最小値を取得します。
 boolean isAccessible()
           加速度センサにアクセスできるかどうかを判定します。
 AccelerationData peekLatestData()
          周期計測用の蓄積データバッファから最新の計測値を1つ取得します。
 void setEventListener(AccelerationEventListener listener)
          イベント検知機能で使用するイベントリスナを設定します。
 void start(int interval)
          周期計測を開始します。
 void startEventDetection(int event)
          加速度センサ機能にイベント検知を依頼します。
 void stop()
          周期計測を停止します。
 void stopEventDetection()
          加速度センサ機能によるイベント検知を停止します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

ACCELERATION_X

public static final int ACCELERATION_X
計測データの種類を示す値で、X軸方向の加速度を表します。(=1)

関連項目:
定数フィールド値

ACCELERATION_Y

public static final int ACCELERATION_Y
計測データの種類を示す値で、Y軸方向の加速度を表します。(=2)

関連項目:
定数フィールド値

ACCELERATION_Z

public static final int ACCELERATION_Z
計測データの種類を示す値で、Z軸方向の加速度を表します。(=3)

関連項目:
定数フィールド値

ROLL

public static final int ROLL
計測データの種類を示す値で、端末の傾き(ロール角)を表します。(=4)

関連項目:
定数フィールド値

PITCH

public static final int PITCH
計測データの種類を示す値で、端末の傾き(ピッチ角)を表します。(=5)

関連項目:
定数フィールド値

SCREEN_ORIENTATION

public static final int SCREEN_ORIENTATION
計測データの種類を示す値で、メインスクリーンの縦横の向きを表します。(=6)

関連項目:
定数フィールド値

EVENT_SCREEN_ORIENTATION

public static final int EVENT_SCREEN_ORIENTATION
イベント検知機能が検知可能なイベントの種類で、 画面の縦横の向きの変化を表します。(=1)

イベントが発生した場合、 リスナのactionPerformedメソッド が呼ばれます。 このとき、第1引数にこのフィールドの値が、 第2引数に画面の縦横の向きが渡されます。
[第2引数の説明]
メインスクリーンが地面と直交しており、 メインスクリーンの上部が上空方向にある場合、 すなわち、加速度(X, Y, Z)が(0, -1g, 0)である状態を基準とし、 加速度のZ軸を軸として、メインスクリーンに向かって端末を 時計回り方向に回転した角度で表します。 0度、90度、180度、270度のいずれかの値です。

関連項目:
startEventDetection(int), 定数フィールド値

EVENT_DOUBLE_TAP

public static final int EVENT_DOUBLE_TAP
イベント検知機能が検知可能なイベントの種類で、 ダブルタップ操作を表します。(=2)

イベントが発生した場合、 リスナのactionPerformedメソッド が呼ばれます。 このとき、第1引数にこのフィールドの値が、 第2引数にダブルタップされた位置が渡されます。
[第2引数の説明]
端末のLCD面に向かい、ダブルタップ操作によりタップされた位置が渡されます。 渡される値は、DOUBLE_TAP_LEFT、DOUBLE_TAP_RIGHT、 DOUBLE_TAP_FRONT、DOUBLE_TAP_BACK のいずれかの値です。

関連項目:
startEventDetection(int), 定数フィールド値

DOUBLE_TAP_LEFT

public static final int DOUBLE_TAP_LEFT
ダブルタップ時の位置を示す値で、端末の左側面のダブルタップを表します。(=0)

関連項目:
定数フィールド値

DOUBLE_TAP_RIGHT

public static final int DOUBLE_TAP_RIGHT
ダブルタップ時の位置を示す値で、端末の右側面のダブルタップを表します。(=1)

関連項目:
定数フィールド値

DOUBLE_TAP_FRONT

public static final int DOUBLE_TAP_FRONT
ダブルタップ時の位置を示す値で、端末のLCD面のダブルタップを表します。(=2)

関連項目:
定数フィールド値

DOUBLE_TAP_BACK

public static final int DOUBLE_TAP_BACK
ダブルタップ時の位置を示す値で、端末の背面のダブルタップを表します。(=3)

関連項目:
定数フィールド値

EVENT_ACCESSIBILITY

public static final int EVENT_ACCESSIBILITY
イベント検知機能が検知可能なイベントの種類で、 加速度センサのアクセス可否が変更されたことを表します(=4)。

イベントが発生した場合、 リスナのactionPerformedメソッド が呼ばれます。 このとき、第2引数にこのフィールドの値が、 第3引数にアクセス可否の変更通知が渡されます。
[第3引数の説明]
加速度センサにアクセスできない状態からアクセスできるようになった場合は ACCESSIBLE_TRUE、 アクセスできる状態からアクセスできなくなった場合は ACCESSIBLE_FALSE が渡されます。

導入されたバージョン:
Star-1.3
関連項目:
startEventDetection(int), 定数フィールド値

ACCESSIBLE_TRUE

public static final int ACCESSIBLE_TRUE
加速度センサにアクセスが可能になったことを表します(=0)。

導入されたバージョン:
Star-1.3
関連項目:
定数フィールド値

ACCESSIBLE_FALSE

public static final int ACCESSIBLE_FALSE
加速度センサにアクセスが不可能になったことを表します(=1)。

導入されたバージョン:
Star-1.3
関連項目:
定数フィールド値
メソッドの詳細

getAccelerationSensor

public static final AccelerationSensor getAccelerationSensor()
加速度センサ機能のインスタンスを返します。 複数回呼び出された場合は、常に同じインスタンスを返します。
初期状態では、加速度センサ機能は計測停止状態です。

実装によっては、加速度センサ機能をサポートしていない場合があります。

[Star-1.3 以降]
getAccelerationSensor(int) メソッドをサポートしている場合、 このメソッドの振る舞いは getAccelerationSensor(0) を指定した場合と同様です。

戻り値:
加速度センサ機能のインスタンスを返します。
例外:
UnsupportedOperationException -
加速度センサ機能をサポートしていない場合に発生します。
DeviceException -
(NO_RESOURCES)
加速度センサデバイスを確保できない場合に発生します。

getAccelerationSensor

public static final AccelerationSensor getAccelerationSensor(int id)
使用するデバイスを指定して、加速度センサ機能のインスタンスを返します。

初期状態では、加速度センサ機能は計測停止状態です。

実装によっては、加速度センサ機能をサポートしていない場合があります。 また、加速度センサ機能をサポートしていても、 このメソッドによるインスタンスの生成をサポートしていない場合があります。

このメソッドをサポートしている端末においては、 搭載されている加速度センサデバイスのうち、 Javaから制御可能なものに、 それぞれ固定的なデバイス ID が割り振られています。 デバイス ID は、0, 1, 2 … の順で連続して割り振られています。 Javaから制御可能な加速度センサデバイスの台数は機種依存です。

デバイス ID に対してこのメソッドが初めて呼ばれた場合は、 インスタンスを生成して返します。 以降、同じデバイス ID に対してこのメソッドを呼び出した場合、 常に同じインスタンスを返します。

パラメータ:
id - 加速度センサのデバイス ID を指定します。
戻り値:
加速度センサ機能のインスタンスを返します。
導入されたバージョン:
Star-1.3
例外:
UnsupportedOperationException -
加速度センサ機能をサポートしていない場合、 または加速度センサ機能をサポートしているがこのメソッドをサポートしていない場合に発生します。
IllegalArgumentException -
引数 id に負の値が指定された場合、 または Java から制御可能な加速度センサデバイスの台数以上の値が指定された場合に発生します。
DeviceException -
(NO_RESOURCES)
加速度センサデバイスを確保できない場合に発生します。

getAvailableData

public int[] getAvailableData()
実装がサポートしている計測データの種類を取得します。
ACCELERATION_X、 ACCELERATION_Y、 ACCELERATION_Z、 ROLL、 PITCH、 SCREEN_ORIENTATION のうち、サポートする計測データの種類の値を含む配列を返します。

計測データの定義は、AccelerationDataクラスの クラス説明を参照してください。

戻り値:
実装がサポートする計測データの種類を返します。 返される配列は、このオブジェクトが内部で保持している配列のコピーです。

getMinDataValue

public int getMinDataValue(int type)
計測データの最小値を取得します。
引数で指定された計測データが取り得る値の最小値を取得可能です。 計測データは、この最小値以上の値になります。

パラメータ:
type - 取得する計測データの種類を指定します。 ACCELERATION_X、 ACCELERATION_Y、 ACCELERATION_Z、 ROLL、 PITCH、 SCREEN_ORIENTATION のいずれかを指定します。
例外:
IllegalArgumentException -
引数 type に、不正な値、 または実装がサポートしない値を指定した場合に発生します。

getMaxDataValue

public int getMaxDataValue(int type)
計測データの最大値を取得します。
引数で指定された計測データが取り得る値の最大値を取得可能です。 計測データは、この最大値以下の値になります。

パラメータ:
type - 取得する計測データの種類を指定します。 ACCELERATION_X、 ACCELERATION_Y、 ACCELERATION_Z、 ROLL、 PITCH、 SCREEN_ORIENTATION のいずれかを指定します。
例外:
IllegalArgumentException -
引数 type に、不正な値、 または実装がサポートしない値を指定した場合に発生します。

getCurrentData

public AccelerationData getCurrentData()
現在の加速度を計測し、結果を取得します(ワンショット計測)。

AccelerationData オブジェクトが保持する配列の値を、 ワンショット計測結果で上書きします。 その後、この AccelerationData オブジェクトへの参照を返します。 常に同じオブジェクトへの参照を返します。 返されるオブジェクトは、 getData(), peekLatestData() とは異なります。

本メソッドの実行に成功すると、 周期測定用の測定結果蓄積バッファはクリアされます。

戻り値:
ワンショット計測結果を格納した AccelerationData オブジェクトを返します。
例外:
DeviceException -
(ILLEGAL_STATE)
周期測定中の場合、イベント検知中の場合に発生します。
DeviceException -
(NO_RESOURCES)
[Star-1.3 以降] 加速度センサにアクセスできない場合(isAccessible() が false を返す場合)に発生します。

start

public void start(int interval)
周期計測を開始します。

指定した間隔毎に周期計測を行います。 計測間隔はミリ秒単位で指定できますが、実際の計測間隔は機種依存です。 実装がサポートしている計測間隔は、 getIntervalResolution() で得られる解像度の倍数です。 実装サポート値以外の計測間隔を指定した場合、 指定した値以上で最も実装サポート値に近い値が指定されたものとして 扱われます。

周期計測を停止させるためには、 stop()メソッドを使用します。

計測結果は、実装内部の計測結果蓄積バッファに蓄積されていきます。 蓄積可能な最大データ数は、 getMaxDataSize() により取得できます。 最大データ数を超えると、蓄積されたデータの 古いものから上書きします。 計測結果は、getData()により、 周期計測中および周期計測後に取得できます。 蓄積された計測結果は、 次にワンショット計測、周期計測、またはイベント検知を行った場合、 またdisposeData()、 getData()を呼び出した場合、 アプリケーションを終了した場合にクリアされます。

周期計測中にサスペンドが発生した場合、 周期計測は自動的に停止します。 周期計測を再開する場合には、レジュームイベント処理において、 再度本メソッドを呼び出してください。 サスペンド前の計測値は getData()により取得して下さい。

getCurrentData()メソッド呼び出し中に 別のスレッドからこのメソッドが呼び出された場合、 getCurrentData()呼び出し終了までこの メソッドの実行は遅延されます。

本メソッドの実行に成功すると、 周期計測用の蓄積バッファはクリアされます。

パラメータ:
interval - 周期計測の間隔をミリ秒単位で指定します。
例外:
DeviceException -
(ILLEGAL_STATE)
周期計測中、イベント検知中の場合に発生します。
IllegalArgumentException -
引数 interval の値が 0 以下の場合に発生します。

stop

public void stop()
周期計測を停止します。

周期計測中以外に呼ばれた場合、何もしません。

関連項目:
start(int)

getIntervalResolution

public int getIntervalResolution()
周期計測の計測間隔の解像度を取得します。
このメソッドにより得られる値の自然数倍の計測間隔をサポートします。

戻り値:
実装がサポートする、周期計測間隔の解像度をミリ秒単位で返します。
関連項目:
start(int)

getMaxDataSize

public int getMaxDataSize()
周期計測において実装内部で蓄積可能な最大データ数を取得します。
周期計測は、最大データ数を超えると蓄積されたデータの 古いものから上書きします。

戻り値:
実装がサポートする、蓄積可能な最大データ数を返します。
関連項目:
start(int)

getDataSize

public int getDataSize()
周期計測用の蓄積データバッファに蓄積されているデータ数を取得します。

戻り値:
蓄積データ数を返します。

getData

public AccelerationData getData()
周期計測用の蓄積データバッファから計測結果を取得します。

AccelerationData オブジェクトが保持する配列の値を、 蓄積バッファに蓄積されている全計測データで上書きします。 その後、この AccelerationData オブジェクトへの参照を返します。 常に同じオブジェクトへの参照を返します。 返されるオブジェクトは getCurrentData(), peekLatestData() とは異なります。

本メソッドの実行に成功すると、 周期計測用の蓄積バッファはクリアされます。

start(int) 呼び出し後から初回計測までにかかる時間は機種依存です。 蓄積バッファに計測データが 1 つも蓄積されていない時に本メソッドを呼び出した場合、 返される AccelerationData オブジェクトの 計測データ数 は 0 になります。

周期計測中に計測結果を取得した場合でも引き続き周期的に計測されます。

戻り値:
周期計測の全計測データを格納した AccelerationData オブジェクトを返します。
関連項目:
start(int)

peekLatestData

public AccelerationData peekLatestData()
周期計測用の蓄積データバッファから最新の計測値を1つ取得します。

AccelerationData オブジェクトが保持する配列の値を、 蓄積バッファに蓄積されている最新の計測データ 1 つで上書きします。 その後、この AccelerationData オブジェクトへの参照を返します。 常に同じオブジェクトへの参照を返します。 返されるオブジェクトは getData(), getCurrentData() とは異なります。

本メソッドの実行に成功しても、 周期計測用の蓄積バッファはクリアされません。

start(int) 呼び出し後から初回計測までにかかる時間は機種依存です。 蓄積バッファに計測データが 1 つも蓄積されていない時に本メソッドを呼び出した場合、 返される AccelerationData オブジェクトの 計測データ数 は 0 になります。

戻り値:
周期計測の最新計測データ 1 つを格納した AccelerationData オブジェクトを返します。

disposeData

public void disposeData()
周期計測用の蓄積バッファをクリアします。

関連項目:
start(int)

getAvailableEvent

public int[] getAvailableEvent()
イベント検知機能 がサポートする検知イベントを返します。 以下の値のうち、サポートするイベントの値を配列中に返します。 イベント検知機能をサポートしない場合、null が返ります。

戻り値:
サポートする検知イベントを返します。 返される配列は、このオブジェクトが内部で保持している配列のコピーです。

startEventDetection

public void startEventDetection(int event)
加速度センサ機能にイベント検知を依頼します。

本メソッドの呼び出しに成功すると、 加速度センサ機能にイベント検知を依頼し、メソッド呼び出しから戻ります。 加速度センサ機能によりイベントが検知されると、 setEventListener() で指定したリスナにイベントが通知されます。

検知可能なイベントは、以下の通りです。

getCurrentData()メソッド呼び出し中に 別のスレッドからこのメソッドが呼び出された場合、 getCurrentData()呼び出し終了までこの メソッドの実行は遅延されます。

イベント検知中にサスペンドが発生した場合は、 イベント検知は自動的に停止します。イベント検知を再開する場合には、 レジュームイベント処理において、再度本メソッドを呼び出してください。

本メソッドの実行に成功すると、 周期計測用の蓄積バッファはクリアされます。

実装によっては本機能をサポートしていない場合があります。 また、イベントの種類によってはサポートしていない場合があります。

パラメータ:
event - 検知イベントを指定します。 複数のイベントを指定可能です。指定する場合は、OR ( "|" ) で繋げて指定します。
例外:
UnsupportedOperationException -
イベント検知機能をサポートしない場合に発生します。
DeviceException -
(ILLEGAL_STATE)
周期測定中の場合、既にイベント検知中の場合に発生します。
DeviceException -
(ILLEGAL_STATE)
リスナが設定されていない場合に発生します。
IllegalArgumentException -
サポートしない検知イベントを指定した場合に発生します。

stopEventDetection

public void stopEventDetection()
加速度センサ機能によるイベント検知を停止します。
停止しているときに呼ばれた場合、何もしません。

複数のイベント検知を行っている場合は、すべてのイベント検知を停止します。

関連項目:
startEventDetection(int)

setEventListener

public void setEventListener(AccelerationEventListener listener)
イベント検知機能で使用するイベントリスナを設定します。
引数 listener に null を指定すると、設定されているリスナを解除します。

パラメータ:
listener - リスナを指定します。
例外:
DeviceException -
(ILLEGAL_STATE)
イベント検知中の場合に発生します。

isAccessible

public boolean isAccessible()

加速度センサにアクセスできるかどうかを判定します。

加速度センサにアクセスできる場合は true 、 加速度センサとの接続が切断されているなどの理由でアクセスできない場合は false を返します。
getAccelerationSensor() や、 getAccelerationSensor(0) で取得したインスタンスなど、 加速度センサと常にアクセス可能なインスタンスにてこのメソッドが呼ばれた場合は常に true を返します。

戻り値:
加速度センサにアクセスできるかどうかを返します。
導入されたバージョン:
Star-1.3


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。