5

LocationListener が実装されているサービスが、500ms ごとに GPSupdate を受信するという問題があります。requestLocationUpdates 関数に入力した minTime に関係なく。

私のコードの一部:

public class LocationService extends Service implements LocationListener {

    LocationManager locMan;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
        locMan.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER;
        locMan.requestLocationUpdates( LocationManager.GPS_PROVIDER, 60000, 1, this); 

    }

    public void onLocationChanged(Location location) {
        Log.d( "Loc", "Location has been changed" );
    }
}

メイン アクティビティのボタンから startService() を呼び出します。この後、バックグラウンドで実行する必要がありますが、継続的に更新されます。

4

1 に答える 1

2

あなたの状況にはいくつか問題があります。

GPS の精度はせいぜい約 3 メートルで、これが最適な条件です。したがって、位置が 1 メートル変化した場合に更新を要求しても意味がありません。GPS ノイズは、実際にはデバイスが静止しているときに動きを示している可能性があります。minDistance を少なくとも 10 にすることをお勧めします。

返された値で何もしないので、 isProviderEnabled() を呼び出す理由がわかりません。

startService() の後はバックグラウンドで実行する必要があるとのことですが、そうではありません。ある種のバックグラウンド スレッドを作成しない限り、サービスはバックグラウンドで実行されません。サービスがどのように機能するかを説明するには、この回答でカバーすることが多すぎます。オンラインで読書をするか、Android 開発に関する優れた本を入手してください。

于 2011-08-09T01:58:59.993 に答える