0

利用可能な最良のプロバイダーを取得するために、以下のコードを作成しました。

private static String provider;

    public static String setCriteria(LocationManager locationManager) {
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
        provider = locationManager.getBestProvider(criteria, true);
        LocationProvider locProvide = locationManager.getProvider(provider);        
        if (provider == null) {
            provider = LocationManager.GPS_PROVIDER;
        }
        return provider;
    }

ロケーションを取得するために使用するプロバイダーを見つけるために、このコードを使用しています。ここで確認したいのは、プロバイダーのステータスです。LocationProvider には 3 つの状態 Available、Out of Service、TEMPORARILY_UNAVAILABLE があることをドキュメントから読みました。ロケーションリスナーにリクエストする前に、ステータスを確認する必要があります。

ステータスが TEMPORARILY_UNAVAILABLE または Out of Service の場合、ユーザーはそれに応じてメッセージを受け取ります。それ以外の場合は場所を見つけます。私の質問はどうすればステータスを確認できますか?

誰かが何か考えを持っているなら、親切に私を助けてください...

4

2 に答える 2

0

Locationmanagerオブジェクトでrequestlocationupdatesを使用して、Locationlistenerオブジェクトを実装してみてください...このように。

   LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(provider, 0, 0, ll);

    private class mylocationlistener implements LocationListener {
  ....

    @Override
public void onStatusChanged(String provider, int status, Bundle extras) {
  switch(status){
   case 0:
   //OutofService
     break;
   case 1:
    //Temporarily unavailable
   break;
   case 2:
  //Available
    break;

  }
}
于 2012-04-14T06:51:56.283 に答える
0

私の知る限り、これは上記の問題に対する究極の解決策です..そしてこれを超えるものは何もありませんisGPSfix

このような他の試みを行うこともできますが、すべての状況で機能することを保証するものではありません。

于 2012-04-14T07:10:12.840 に答える