2011-03-10 5 views
5

位置情報プロバイダのステータスを取得するには、Androidで最も良い方法は何ですか?ロケーションの更新のためにLocationListenerを登録すると、ステータスが変更されるたびにonStatusChanged(String provider, int status, Bundle extras)コールバックが呼び出されます。しかし、私は現在のステータス(AVAILABLEOUT_OF_SERVICETEMPORARILY_UNAVAILABLE)を取得する方法を位置更新に登録せずに見つけられませんでした。 isProviderEnabledメソッドは、プロバイダーが一般的にオンになっているかどうか(デバイスの設定で)を示しているだけなので、プロバイダーのサービスが停止していますが、trueを返す可能性があります。AndroidのロケーションAPI:プロバイダのステータスを取得

もう1つの質問:位置の更新を登録せずにステータスの更新を聞くことは可能ですか?私は特定のプロバイダーで場所を聞いてみたいが、同時に他の人が利用できるかどうかをチェックする。私の現在の回避策は、最小時間と距離を非常に高い値に設定することですが、もっと良い解決策があるのだろうかと思います...

ありがとうございました!

ところで:可能な場合は、GPSのステータスをしたいですかなぜあなたは場所に興味を持っていない場合は、ソリューションは、Androidの1.1

+0

私はあなたがしたいことをする方法がわかりません。しかし、最後に知っている場所( 'LocationManager.getLastKnownLocation')を取得し、それが最近のものかどうかを確認することができます。これは、プロバイダが利用可能かどうかを見積もります。 –

答えて

2

で動作するはずですか?

しかし、あなたはこのようなGPSの状態の少なくともいくつかの側面を得ることができます:

final GpsStatus gs = this.locationManager.getGpsStatus(null); 
int i = 0; 
final Iterator<GpsSatellite> it = gs.getSatellites().iterator(); 
while(it.hasNext()) { 
    it.next(); 
    i += 1; 
} 
this.gpsSatsAvailable = i; 

参照http://developer.android.com/reference/android/location/GpsStatus.html あなたは(3D修正するために、少なくとも4個の、正確な2Dの修正のための人工衛星、および5が必要になります高度を含む)。 ドキュメントによれば、onStatusChanged()からステータスにアクセスして一貫した情報を取得する必要があります。このメソッドの外側からも機能します。リンクされたドキュメントは、発生する可能性のある問題を説明します。 GPSステータスが更新されないので、もちろん、位置の更新を聞く必要があります。

+0

なぜですか?私の場合は、オンボードとブルートゥースで接続されたさまざまなセンサーのステータス画面を表示する技術アプリを開発しているため、表示する初期値は意味があります。より哲学的には、 "ステータス"が自身の変更ハンドラを有効にするのに十分重要であるなら、確かに現在の値を照会できるほど重要です。 – GISmatters

+0

あなたはそこにポイントを持っています。 – Stefan

関連する問題