Google マップを使用してユーザーの位置を追跡するアプリに取り組んでいます。「You are here!」の視認性を変えたい ユーザーが位置情報サービスを手で閉じるか、サービスにアクセスできない状態になると、マーカーが表示されます。このメソッドは、位置情報サービスが有効かどうかの情報を返すことができます:
private boolean isLocationServicesEnabled() {
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER) || lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
return true;
}
return false;
}
ただし、位置情報サービスのステータスを一度だけ検出したくはありません。ユーザーが位置情報サービスを開いたり閉じたりするたびに、それを検出してマーカーの可視性を変更する必要があります。要するに、このずさんな疑似コードは、私が聞きたいことを説明しています。
while application runs
if location services turn off
change marker visibility to false
else
change marker visibility to true
android.location.LocationListener なしでこのタスクを達成する方法が見つかりませんでした。Fused Location Provider を使用するだけで達成したいと考えています。何か考えはありますか?見たい場合に使用したコア構造は次のとおりです。
http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/ (「完全なコード」のタイトルを確認してください)