2

私はサンプルアプリケーションに取り組んでいます.このアプリケーションでは、ユーザーが途中でAndroidモバイルを使用して移動するときに、更新された場所の緯度と経度を取得したいと考えています.次のようにLocation Managerクラスを実装しました:

 private LocationManager locationManager;
 private LocationListener locationListener;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

    locationListener = new GPSLocationListener();

    locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        0, 
        0, 
        locationListener);
    }

       private class GPSLocationListener implements LocationListener 
{
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
       Toast.makeText(getBaseContext(), 
                    "Latitude: " + location.getLatitude() + 
                    " Longitude: " + location.getLongitude(), 
                    Toast.LENGTH_SHORT).show();
           }
        } 

}

バックグラウンドから更新された場所の緯度と経度を取得する方法は?

どんな体でも私を助けてください。

4

2 に答える 2

3

サービスに「LocationListener」を「実装」する必要があります。

http://androidgps.blogspot.com/2008/09/simple-android-tracklogging-service.htmlをご覧ください。

于 2011-09-16T11:05:13.580 に答える
2

アプリケーションが実行されていないときに緯度と経度を取得する場合は、バックグラウンドで緯度と経度を取得する Service を使用して、必要なタスクを実行できます。また、アップデートの取得はデバイスのバッテリー使用量の点で非常にコストがかかる操作であるため、不要な場合はアップデートを削除することを忘れないでください。

もう 1 つ、場所がプロバイダーによって取得された場合にのみ onLocationChanged() が呼び出されるため、null 値の場所を確認する必要はありません。

私もアンドロイドは初めてですが。これはあなたを助けるかもしれません。これらの Service クラス メソッドが実際に何を行い、いつ呼び出されるかは、android のドキュメントを参照する必要があります。これは完成したコードではありません。自分でこれにロケーションリスナーを実装しました。これは、通常のクラスを示す単なるサンプル プログラムです。

import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class BackService extends Service {

private MyTimerTask mTimerTask;
private Timer mTimer;

@Override
public void onCreate() {
    mTimer = new Timer();
    mTimerTask = new MyTimerTask();
} 
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    mTimer.schedule(mTimerTask, 0, 500);
    Log.d("onStartCommand","onStartCommand called...");
    return START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

private class MyTimerTask extends TimerTask {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        Log.i("BackService","BackService is running...");
        doSomethingWithLocation();
    }

}


}
于 2011-09-16T11:01:20.603 に答える