AndroidのロケーションAPIは、ユーザーの場所を特定したり、ユーザーがいつ一般エリアを離れたかを通知したり(ジオフェンシング)、ユーザーの行動(歩行、走行、運転など)を解釈するなど、様々な目的でさまざまなアプリケーションで使用されます。
しかし、Android Location APIはユーザーの場所を取得する唯一の手段ではありません。以下は、AndroidのLocationManager
と他の一般的な位置情報ライブラリの使い方の例です。
Androidでロケーション認識アプリを構築するには、次の2つの方法があります。
LocationManager
FusedLocationProviderApi
長所
短所
特徴
プロバイダー
GPS
ネットワーク
受動的
長所
短所
特徴
LocationRequestの優先レベル
PRIORITY_HIGH_ACCURACY
ACCESS_FINE_LOCATION
より正確な場所、またはACCESS_COARSE_LOCATION
より正確でない場所ACCESS_FINE_LOCATION
が使用されていない場合は、ロケーション更新を生成するためにGPSは使用されませんが、正しい条件ではかなり正確なポイントが見つかるでしょう。 ACCESS_FINE_LOCATION
が使用されている場合、環境条件が与えられたときにデバイスを現在どのように正確に追跡できるかに応じて、GPSを使用して位置点を生成することができます。 PRIORITY_BALANCED_POWER_ACCURACY
ACCESS_FINE_LOCATION
より正確な場所、またはACCESS_COARSE_LOCATION
より正確でない場所PRIORITY_HIGH_ACCURACY
同じノートPRIORITY_LOW_POWER
PRIORITY_NO_POWER
LocationManager
PASSIVE_PROVIDER
とほぼ同じ機能PASSIVE_PROVIDER
は、使用された基本的な位置の更新を報告しますOnLocationChanged()は呼び出されません
これはAndroidの場所を取得する際の一般的な問題であると思われるため、よくある修正の簡単なチェックリストを掲載します。
マニフェストを確認してください!
最も一般的な問題の1つは、適切な権限が与えられていないことです。 GPSを使用している場合は、 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
を使用し、そうでない場合は<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
。 GoogleのFusedLocationApiにはACCESS_FINE_LOCATIONが必要ACCESS_FINE_LOCATION
。
(Android 6+用) ランタイムのアクセス許可を確認してください !
確認し、許可をリクエストしてください!権限が与えられていない場合は、クラッシュするか、すべての例外をキャッチしている場合は悪化します。何も表示されません。ユーザーがアプリの開始時にあなたに許可を与えても問題はありません。常にすべての通話にアクセス権があるかどうかを確認してください。ユーザーは簡単に設定に行き、取り消すことができます。
コードを再確認してください!
あなたは正しいリスナーを通過していると確信していますか? BroadcastReceiver
またはIntentService
をマニフェストに追加しましたか?あなたは使用しているPendingIntent.getService()
にBroadcastReceiver
クラス、またはgetBroadcast()
にIntentService
クラス?あなたはリクエストした直後にあなたのリスナーをあなたのコードのどこかに登録解除していないと確信していますか?
デバイスの設定を確認してください!
明らかに、位置情報サービスがオンになっていることを確認してください。
ネットワークサービスを使用している場合は、「常にスキャン可能」を有効にしましたか?あなたの位置モードを「最高」(「高精度」)または「バッテリー節約」(「ネットワークのみ」)に設定していますか?
GPSを使用している場合、ロケーションモードで「ベスト」(「高精度」)または「デバイスのみ」をオンにしましたか?
コードを再確認してください!
はい、これはここに2回あります。あなたが使用してみましたLocationListener
の代わりに、 PendingIntent
、またはその逆に、あなたが実際に実装確保するためLocationManager
正しく?アクティビティまたはサービスのライフサイクルの一部で、場所のリクエストが削除されていないことを確認していますか?
あなたの周辺をチェックしてください!
サンフランシスコの真ん中の建物の1階にあるGPSをテストしていますか?どこにいてもネットワークの場所をテストしていますか?あなたは、あなたのデバイスがなぜ場所を取得していないのだろうかと疑問に思う、すべての無線信号の秘密の地下バンカーで働いていますか?場所の問題のトラブルシューティングを行うときには、常に周囲を再確認してください。
場所がうまくいかない理由はそれほど明白ではないかもしれませんが、これらの難解な修正を検索する前に、この簡単なチェックリストを実行してください。