6

何らかの理由で onLocationChanged が更新されない小さな GPS アプリを作成しました。アプリの起動時に一度だけ実行されます。

これが私のコードです:

public BackgroundLocationService() {
        super("myintentservice");

        locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

        Criteria crt = new Criteria();
        crt.setAccuracy(Criteria.ACCURACY_FINE);
        String bestProvider = locManager.getBestProvider(crt, true);

        boolean gps_enabled;
        boolean network_enabled;
        boolean best_enabled;

        gps_enabled = locManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        network_enabled = locManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        best_enabled = locManager.isProviderEnabled(bestProvider);


        if (best_enabled) {
            locManager.requestLocationUpdates(bestProvider, 15000, 20, locListener);
            Log.i(TAG, "Best enabled: " + bestProvider);
        } else {
            Log.i("Location Provider: ", "best not enabled: " + bestProvider);
            if (gps_enabled) {
                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locListener);
                Log.i(TAG, "gps enabled!");
            }
            if (network_enabled) {
                locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locListener);
                Log.i(TAG, "network enabled!");
            }
        }

    }



    class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {

            if (location != null) {

                //locManager.removeUpdates(locListener);
                longitude = Double.toString(location.getLongitude());
                latitude = Double.toString(location.getLatitude());

                Log.i(TAG,"Location has CHANGED!");
            }
        }
        public void onProviderDisabled(String arg) {}
        public void onProviderEnabled(String arg) {}
        public void onStatusChanged(String provider, int status, Bundle extras) {}
    }

「場所が変わりました!」メッセージは、アプリの起動ごとに 1 回だけ表示されます。私はオフィスにいますが、自分の位置から少なくとも 5 ~ 10 メートル離れることができ、すべてのプロバイダーが有効になっているので、問題ないはずですよね?

何か案は ?

4

2 に答える 2

4

ロケーション リスナーを登録すると、最小時間が 15 秒、最小距離が 20 メートルの更新が要求されます。あなたはオフィスの中にいるので、実際に 5 ~ 10 メートルの移動を検出するのに十分正確な GPS 修正を取得できる可能性は低いです。外部でデバッグを試みましたか? 同様に、モックの場所を有効にした場合は、モックの座標をエミュレーターに送信して、場所が更新されたときにアプリが期待どおりに動作するようにします。

于 2013-01-24T14:59:21.903 に答える
1

試してみてください -

    locManager.requestLocationUpdates(bestProvider, 0, 0, locListener);
于 2013-01-24T15:03:18.133 に答える