0

デバイスの場所を取得しようとしているので、クラスを作成しました

public class MainActivity extends Activity implements LocationListener

とメソッド

private Location getLocation(Context ctx) {
    Location location = null;
    LocationManager lm = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    List<String> providers = lm.getProviders(true);

    for(int i=providers.size() - 1; i>=0; i--) {
        lm.requestLocationUpdates(providers.get(i), 100, 1, MainActivity.this);
        location = lm.getLastKnownLocation(providers.get(i));
        if(location != null) {
            Log.i("Used provider", providers.get(i));
            break;
        }
    }

    if(location != null) {
        Log.i("Latitude", String.valueOf(location.getLatitude()));
        Log.i("Longitude", String.valueOf(location.getLongitude()));
        Log.i("Accuracy", String.valueOf(location.getAccuracy())+" m");
    }

    return location;
}

それは非常にうまく機能しますが、たとえ私が外にいても、常に GPS をスキップします。インターフェース LocationListener からオーバーライドされたすべてのメソッドを空のままにしておいたと言わざるを得ません。何か案が?私が使っているコードは大丈夫だと思いますか? どうもありがとうございました!

編集:返信ありがとうございますが、私のコードに何か問題があるはずです。ログを介して、デバイスが使用しているプロバイダーを確認できます。昨日は「パッシブ」を使用していて、位置は完璧 (26 m の精度) でしたが、今日はまだ「パッシブ」を使用していますが、精度は 2288 m で、信じられないほど悪いです! Google マップを使用して自分の位置を特定しようとすると、まったく問題ありません。何か不足していますか?

4

1 に答える 1

0

GPS からの場所よりも高速であるため、GSM/WiFi から場所を選択すると思います。WiFi を無効にするか、WiFi/GSM からの場所の取得を無効にしてから、場所を特定しようとします。

于 2013-08-04T22:02:34.787 に答える