|
DelphiXE3 [FMX] 位置センサー(LocationSensor)2014/01/05 |
前回は [Layouts]内の「枠付垂直スクロールボックス」(FramedVertScrollBox)について見てみました。[Layouts]内のコンポーネントはこれで終了ですので次は、[Sensors]内について見ていきます。まずは、「位置センサー」(LocationSensor)から。
[Sensors]内
FMX | |
ヘルプより。
デバイスの位置情報を決定するために使用されます。
位置センサは、Start メソッドを使って起動する必要があります。Start を呼び出すと、デバイス位置の変化などの提供可能な情報がユーザーに通知されます。Stopメソッドを使用すると、位置センサが位置情報の更新を受信しなくなります。
位置センサは、ハードウェア固有のさまざまなメソッドを通じてデバイスの位置情報を決定できます。使用中のメソッドは位置センサを特定の種類に設定します。SensorType は位置センサの種類を返します。
機能や提供可能な位置情報の量は位置センサによって異なるため、AvailableProperties プロパティを確認して、位置センサ オブジェクト内の実際のどのプロパティが使用可能で有効な値を持っているかを判定する必要があります。たとえば、Latitude プロパティと Longitude プロパティの値のみ提供できるセンサがあるとしましょう。この場合、AvailableProperties には Latitude と Longitude のみ含まれています。位置情報に関連する残りのプロパティには、有効な値が格納されていません。
位置センサが最新の位置情報を返すことができるのは、その権限が与えられている場合だけです。そのため、ユーザーは、センサでデバイスの位置を決定することが適切かどうかをオペレーティング システムから確認されます。Authorized には、その件についてのユーザーの応答を示す値が格納されています。
Accuracy は、センサで決定されるデバイスの地理的位置がデバイスの実際の地理的位置と比べてどの程度正確かを表します。
Distance は、デバイスの移動により位置センサがデバイスの位置を決定し直して新しい位置情報を返すことになる場合の移動距離の下限です。
位置センサには、デバイスの位置に関する情報を取得するためのプロパティがあります。プラットフォームやセンサ ハードウェアによっては、これらのプロパティ内の情報が、要求を受けるとすぐに使用できるのではなく、センサが実際の情報を受信したときのみ使用できる場合があります。
同期的に動作するセンサもあれば、非同期的に動作するセンサもあります。TCustomLocationSensor は、位置センサ間およびプラットフォーム固有機能間のこのような違いを克服し、使いやすいインターフェイスの下でそれらを統一しようとしています。同期センサへのデータ要求があると、呼び出し側スレッドは情報を取得できるまで待機しなければならないのに対して、非同期センサへのデータ要求では、スレッドはブロックされず、位置センサで位置情報が決定されるまでプログラム フローは普通に続行できます。その時点で、位置センサはコールバックを呼び出して、デバイスの位置に関する情報を取得します。
これら 2 つの正反対の動作の違いを克服するため、TCustomLocationSensor は、実際のセンサがあたかも同期的であるかのように動作します。プロパティの読み取り時に、基礎となるプラットフォーム クラスが非同期的に動作した場合、TCustomLocationSensor は、そのプロパティのキャッシュされている値(通常は、最後に決定された値)を返します。最後の値がなければ、センサで位置情報が決定されるまでデフォルト値が返されます。 |
| |
|
|
ヘルプ内容は上記だけで、その他、各プロパティや各イベント、各メソッドについての記述は一切ありません。なので扱い方等はさっぱり分かりません。
ですが、DelphiXE4 の iOS用チュートリアルの頁を見ると、Distanceプロパティが移動距離(m)を指定するようになっていて、Activeプロパティを True にしている際、移動距離分を移動したら、OnLocationChangedイベントが発動し、そのイベントハンドラが実行出来るので、その引数である NewLocation の Latitudeプロパティ、及び、Longitudeプロパティの値(double型)が取得出来るのでそれを元に Googleマップにアクセスして、現在自分がどこにいるのか?を知る事が出来る、というようなものらしいです。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2014/01/04
2014/01/05
▼2014/01/06
シェアウェア
Script!World
データベース
|