0

私はアプリをやっていて、インターネットでいくつかの情報をチェックしたいのですが、デバイスがXメートル移動した場合にのみチェックしたいと思います。たとえば、ユーザーが300メートル移動した場合はサーバーに電話をかけ、そうでない場合は何もしません。しかし、バッテリーが急速に消耗するため、GPSが調整し、距離を計算している間、サービスを開始することはできないと思います。

そして私の質問は:Androidがサービスを開始する方法はありますか?GPS座標がXメートルを変更したことを警告するブロードキャストを送信しますか?

現在、私はAlarmManagerを持っており、30分ごとにGPS座標を取得しますが、より正確なものが必要です。

4

1 に答える 1

1

LocationManager.requestLocationUpdates();メソッドを使用します。更新を送信する必要がある最小時間を秒単位で指定し、更新前の最小メーター数を指定できます。

次のようになります。

//ミリ秒単位
privatefinalint MINIMUM_TIME_BETWEEN_UPDATES = 5000;

//メートル単位
privatefinalint MINIMUM_DISTANCE_BETWEEN_UPDATES = 1;

LocationManager lManager =(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
LocationListener = listener = new LocationListener() {

          public void onStatusChanged(String provider, int status, Bundle extras) {           
}

          public void onProviderEnabled(String provider) {
          }


          public void onProviderDisabled(String provider) {
          }

          public void onLocationChanged(Location location) {
          }

      };

lManager.requestLocationUpdates(bestProvider, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_BETWEEN_UPDATES, listener);

これによりLocationManager、指定されたロケーションプロバイダー(GPSまたはネットワーク)、指定された秒数、および指定されたメートル数でが作成されます。locationmanagerは、更新を`LocationListenerに送信します。onLocationChangedは、更新が受信されるたびに呼び出されます。bestProvider変数は、LocationManager.getBestProvider();を使用して見つけることができます。およびCriteriaクラス。

于 2012-11-12T10:03:50.307 に答える