com.docomostar.device.location
クラス WalkingNavigation

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

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

歩行方位取得機能を提供するクラスです。 このクラスでは、簡易的な自律航法を行うために各種デバイスの計測結果を一括した情報(歩行情報)を取得できます。

歩行情報の計測は、 歩行(ネイティブ歩数計で一歩がカウントされたこと)が検知された契機で計測を行う歩行検知計測と、 歩行を検知したかどうかに関わらず現在の歩行情報が取得できるワンショット計測があります。

計測する方向を PhoneSystem.DEV_EYE_DIRECTION で設定しておくことで、 Star アプリはユーザの視線の方向が反映された方位角を取得できます。 PhoneSystem.DEV_EYE_DIRECTION の設定は、 歩行検知計測とワンショット計測の両方で有効です。

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

ワンショット計測は、getCurrentData() メソッドを呼び出した時点でのネイティブ歩数計が保持している情報と端末の向きの方位角を取得することができます。 歩行検知計測中であっても、ワンショット計測が可能です。

歩行検知計測は、start() メソッドを呼び出すと、 歩行の検知を開始し、 歩行を検知する度にその時点でのネイティブ歩数計が保持している情報とユーザの視線の方向が反映された端末の向きの方位角がバッファに蓄積されていきます。 歩行検知計測を停止するには、 stop() メソッドを呼び出します。

歩行検知計測中は、ユーザの視線の方向を設定することはできません。 ユーザの視線方向を再設定する前には、 歩行検知計測を停止し、 バッファからデータを取得しておいて下さい。

歩行検知計測中に Canvas の座標系を変更する(Canvas2 を使用する)場合
蓄積バッファ内のデータの一貫性が保証されなくなるため、 Star アプリが期待する歩行検知計測の結果が得られないことがあります。 Star アプリが期待する結果を得るためには、 歩行検知計測を停止させ蓄積バッファよりデータを取得してから、 Canvas の座標系を変更し、歩行検知計測を再開して下さい。

[Star-2.0 以降]
歩行検知計測中に Pedometer.stop() によってネイティブ歩数計による歩数の計測を停止した場合、 歩行検知計測も停止されてしまうことに注意してください。

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

メソッドの概要
 void disposeData()
          歩行検知計測用の蓄積バッファをクリアします。
 WalkingNavigationData getCurrentData()
          現在の歩行情報を取得します(ワンショット計測)。
 WalkingNavigationData getData()
          歩行検知計測用の蓄積データバッファから計測結果を取得します。
 int getDataSize()
          歩行検知計測用の蓄積データバッファに蓄積されているデータ数を取得します。
 int getMaxDataSize()
          歩行検知計測において実装内部で蓄積可能な最大データ数を取得します。
static WalkingNavigation getWalkingNavigation()
           歩行方位取得機能のインスタンスを取得します。
 WalkingNavigationData peekLatestData()
          歩行検知計測用の蓄積データバッファから最新の計測値を1つ取得します。
 void start()
          歩行検知計測を開始します。
 void stop()
          歩行検知計測を停止します。
 
クラス Object から継承されたメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

getWalkingNavigation

public static WalkingNavigation getWalkingNavigation()

歩行方位取得機能のインスタンスを取得します。 複数回呼び出された場合は、常に同じインスタンスを返します。

初期状態では、歩行方位取得機能の歩行検知計測は停止状態です。

インスタンスを取得するには、ADF に AccessUserInfo キーの指定が必要です。

実装によっては、歩行方位取得機能をサポートしていない場合があります。

戻り値:
歩行方位取得機能のインスタンスを返します。
例外:
UnsupportedOperationException -
歩行方位取得機能をサポートしていない場合に発生します。
DeviceException -
(NO_RESOURCES)
地磁気センサデバイス、または、加速度センサデバイスを確保できない場合に発生します。
SecurityException -
ADF に AccessUserInfo キーの指定がないアプリケーションが、 このメソッドを呼び出した場合に発生します。

start

public void start()
歩行検知計測を開始します。

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

歩行検知計測中にサスペンドが発生しても、計測は継続します。

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

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

歩行検知計測を停止させるためには、 stop() メソッドを使用します。 サスペンド時に計測を継続している場合も含めて、 アプリケーションが終了すると計測は停止します。 アプリケーションの終了以外の理由で歩行検知計測が停止した場合、 StarEventObject.STAR_WALKING_NAVIGATION_STOPPED イベントが発生します。

例外:
DeviceException -
(ILLEGAL_STATE)
既に歩行検知計測中である場合に発生します。
DeviceException -
(BUSY_RESOURCE)
電子コンパス機能が既に周期計測中である場合に発生します。
DeviceException -
(BUSY_RESOURCE)
加速度センサ機能が既に周期計測中の場合や、 イベント検出を行っている場合に発生します。
SecurityException -
ネイティブ独自のセキュリティ設定により、 ネイティブ歩数計の情報を取得できない場合に発生します。 ネイティブ歩数計の利用設定の状態がオフである場合も含みます。

stop

public void stop()
歩行検知計測を停止します。

歩行検知計測中以外に呼ばれた場合、何もしません。


getMaxDataSize

public int getMaxDataSize()
歩行検知計測において実装内部で蓄積可能な最大データ数を取得します。

歩行検知計測は、最大データ数を超えると蓄積されたデータの 古いものから上書きします。

戻り値:
実装がサポートする、蓄積可能な最大データ数を返します。

getDataSize

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

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

getData

public WalkingNavigationData getData()
歩行検知計測用の蓄積データバッファから計測結果を取得します。

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

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

歩行検知計測中に計測結果を取得した場合でも、計測を継続します。

蓄積バッファに計測データが 1 つも蓄積されていない時にこのメソッドを呼び出した場合、 返される WalkingNavigationData オブジェクトの 計測データ数 は 0 になります。

戻り値:
歩行検知計測の全計測データを格納した WalkingNavigationData オブジェクトを返します。

peekLatestData

public WalkingNavigationData peekLatestData()
歩行検知計測用の蓄積データバッファから最新の計測値を1つ取得します。

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

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

蓄積バッファに計測データが 1 つも蓄積されていない時にこのメソッドを呼び出した場合、 返される WalkingNavigationData オブジェクトの 計測データ数 は 0 になります。

戻り値:
歩行検知計測の最新計測データ 1 つを格納した WalkingNavigationData オブジェクトを返します。

disposeData

public void disposeData()
歩行検知計測用の蓄積バッファをクリアします。


getCurrentData

public WalkingNavigationData getCurrentData()
現在の歩行情報を取得します(ワンショット計測)。

このメソッドを呼び出すと、 その時点におけるネイティブ歩数計が保持している情報と端末の向きの方位角が、 ワンショット計測用の WalkingNavigationData オブジェクトに上書きされます。 その後、この WalkingNavigationData オブジェクトへの参照を返します。 常に同じオブジェクトへの参照を返します。 返されるオブジェクトは、 getData(), peekLatestData() とは異なります。

このメソッドによる計測結果は、蓄積バッファには蓄積されません。 また、このメソッドを呼び出すことによって、 蓄積バッファに存在するデータがクリアされることはありません。

戻り値:
ワンショット計測によるデータを格納した WalkingNavigationData オブジェクトを返します。
例外:
DeviceException -
(BUSY_RESOURCE)
電子コンパス機能が既に周期計測中である場合に発生します。
DeviceException -
(BUSY_RESOURCE)
加速度センサ機能が既に周期計測中の場合や、 イベント検出を行っている場合に発生します。
SecurityException -
ネイティブ独自のセキュリティ設定により、 ネイティブ歩数計の情報を取得できない場合に発生します。 ネイティブ歩数計の利用設定の状態がオフである場合も含みます。


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ドコモの商標または登録商標です。

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