Android-location-based-services
Android-ロケーションベースのサービス
'_AndroidのロケーションAPIを使用すると、基盤となるロケーションテクノロジーの詳細に集中する必要なく、ロケーション認識アプリケーションを簡単に構築できます。_
これは、自動化された位置追跡、ジオフェンシング、アクティビティ認識により、アプリへの位置認識の追加を容易にする Google Play services の助けを借りて可能になります。
このチュートリアルでは、APPでロケーションサービスを使用して現在の位置を取得する方法、定期的な位置の更新を取得する方法、住所を検索する方法などを示します。
ロケーションオブジェクト
Sr.No. | Method & Description |
---|---|
1 |
float distanceTo(Location dest) この場所と指定された場所の間のおよその距離をメートル単位で返します。 |
2 |
float getAccuracy() この場所の推定精度をメートル単位で取得します。 |
3 |
double getAltitude() 利用可能な場合は、標高をメートル単位で取得します。 |
4 |
float getBearing() 度で方位を取得します。 |
5 |
double getLatitude() 緯度を度で取得します。 |
6 |
double getLongitude() 度で経度を取得します。 |
7 |
float getSpeed() 速度が利用可能な場合は、地上のメートル/秒で速度を取得します。 |
8 |
boolean hasAccuracy() この場所に精度がある場合はtrue。 |
9 |
boolean hasAltitude() この場所に高度がある場合はtrue。 |
10 |
boolean hasBearing() この場所にベアリングがある場合はtrue。 |
11 |
boolean hasSpeed() この場所に速度がある場合はtrue。 |
12 |
void reset() ロケーションの内容をクリアします。 |
13 |
void setAccuracy(float accuracy) この場所の推定精度、メートルを設定します。 |
14 |
void setAltitude(double altitude) 標高を、海抜0メートルで設定します。 |
15 |
void setBearing(float bearing) 方位を角度で設定します。 |
16 |
void setLatitude(double latitude) 緯度を度で設定します。 |
17 |
void setLongitude(double longitude) 経度を度単位で設定します。 |
18 |
void setSpeed(float speed) 地上の速度をメートル/秒で設定します。 |
19 |
String toString() このオブジェクトの簡潔で人間が読み取れる説明を含む文字列を返します。 |
現在地を取得する
現在の場所を取得するには、 LocationClient オブジェクトであるロケーションクライアントを作成し、* connect()メソッドを使用してロケーションサービスに接続し、その getLastLocation()メソッドを呼び出します。 このメソッドは、上記で説明した緯度と経度の座標およびその他の情報を含む *Location オブジェクトの形式で最新の場所を返します。 あなたの活動で位置ベースの機能を使用するには、2つのインターフェイスを実装する必要があります-
- GooglePlayServicesClient.ConnectionCallbacks *GooglePlayServicesClient.OnConnectionFailedListener
これらのインターフェイスは、アクティビティクラスに実装する必要がある次の重要なコールバックメソッドを提供します-
Sr.No. | Callback Methods & Description |
---|---|
1 |
ロケーションサービスがロケーションクライアントに正常に接続されると、このコールバックメソッドが呼び出されます。 * connect()*メソッドを使用して、ロケーションクライアントに接続します。 |
2 |
abstract void onDisconnected() このコールバックメソッドは、クライアントが切断されたときに呼び出されます。 * disconnect()*メソッドを使用して、ロケーションクライアントから切断します。 |
3 |
abstract void onConnectionFailed(ConnectionResult result) このコールバックメソッドは、クライアントをサービスに接続する際にエラーが発生したときに呼び出されます。 |
'_アクティビティクラスの* onCreate()メソッドでロケーションクライアントを作成し、それを onStart()*で接続する必要があります。これにより、ロケーションサービスは、アクティビティが完全に見える間、現在のロケーションを維持します。 * onStop()*メソッドでクライアントを切断する必要があります。これにより、アプリが表示されないときに、位置情報サービスが現在の位置を維持しなくなります。 これにより、バッテリーの電力を大幅に節約できます。_
更新された場所を取得する
場所の更新を希望する場合は、上記のインターフェイスとは別に、 LocationListener インターフェイスも実装する必要があります。 このインターフェイスは、アクティビティクラスに実装する必要がある次のコールバックメソッドを提供します-
Sr.No. | Callback Method & Description |
---|---|
1 |
abstract void onLocationChanged(Location location) このコールバックメソッドは、場所が変更されたときにLocationClientから通知を受信するために使用されます。 |
ロケーションのサービス品質
Sr.No. | Method & Description |
---|---|
1 |
setExpirationDuration(long millis) このリクエストの期間をミリ秒単位で設定します。 |
2 |
setExpirationTime(long millis) ブートからのミリ秒単位で、リクエストの有効期限を設定します。 |
3 |
setFastestInterval(long millis) ロケーション更新の最速の間隔をミリ秒単位で明示的に設定します。 |
4 |
setInterval(long millis) アクティブな場所の更新に必要な間隔をミリ秒単位で設定します。 |
5 |
setNumUpdates(int numUpdates) ロケーション更新の数を設定します。 |
6 |
setPriority(int priority) リクエストの優先度を設定します。 |
たとえば、アプリケーションで高精度の位置情報が必要な場合は、* setPriority(int)をPRIORITY_HIGH_ACCURACYに、 setInterval(long)*を5秒に設定して位置情報要求を作成する必要があります。 また、「都市」レベルの精度を要求するPRIORITY_LOW_POWERや「ブロック」レベルの精度を要求するPRIORITY_BALANCED_POWER_ACCURACYなど、より大きな間隔や優先順位を使用できます。
'_アクティビティでは、バックグラウンドに入るとき(onPause()など)にすべてのロケーションリクエストを削除するか、少なくともリクエストをより長い間隔で低品質に切り替えて電力消費を節約することを強く検討する必要があります。_
ロケーション住所の表示
例
次の例は、アプリで位置情報サービスを使用して現在の位置とその同等の住所などを取得する方法を実際に示しています。
'_この例を試すには、最新のAndroid OSを搭載した実際のモバイルデバイスが必要です。そうでない場合は、エミュレータが動作しないことがあります。_
Androidアプリケーションを作成する
Step | Description |
---|---|
1 | You will use Android studio IDE to create an Android application and name it as finddevguides under a package com.example.finddevguides7.myapplication. |
2 | add src/GPSTracker.java file and add required code. |
3 | Modify src/MainActivity.java file and add required code as shown below to take care of getting current location and its equivalent address. |
4 | Modify layout XML file res/layout/activity_main.xml to add all GUI components which include three buttons and two text views to show location/address. |
5 | Modify res/values/strings.xml to define required constant values |
6 | Modify AndroidManifest.xml as shown below |
7 | Run the application to launch Android emulator and verify the result of the changes done in the application. |
以下は、変更されたメインアクティビティファイル MainActivity.java の内容です。
以下は、変更されたメインアクティビティファイル GPSTracker.java の内容です。
以下は res/layout/activity_main.xml ファイルの内容です-
以下は、2つの新しい定数を定義する res/values/strings.xml の内容です-
以下は、 AndroidManifest.xml のデフォルトのコンテンツです-
今場所を表示するには、次のように場所情報を表示しますGet Location Buttonを選択します-