как узнать широту и долготу местоположения и обновить данные из наземной службы - PullRequest
2 голосов
/ 16 сентября 2011

Я работаю над примером приложения. В этом приложении я хотел бы получить обновленную широту и долготу местоположения, когда пользователь перемещается с android mobile в пути. Я реализовал класс 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();
           }
        } 

}

Как получить обновленную широту и долготу местоположения на заднем плане?

пожалуйста, любое тело, помогите мне.

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Вам необходимо внедрить 'LocationListener' в вашу службу.

Выезд http://androidgps.blogspot.com/2008/09/simple-android-tracklogging-service.html

2 голосов
/ 16 сентября 2011

Если вы намереваетесь получить широту и долготу, когда ваше приложение не запущено, вы можете использовать Сервис, который получает широту и долготу в фоновом режиме и выполняет любую задачу, которую вы хотите. А также не забывайте удалять обновления, когда они не нужны, поскольку получение обновлений является очень дорогостоящей операцией с точки зрения использования батареи устройства.

Еще одна вещь, вам не нужно проверять местоположение на нулевое значение, потому что onLocationChanged () будет вызываться только тогда, когда местоположение получено вашим провайдером.

Хотя я тоже новичок в Android. Это может помочь вам. Вы должны увидеть документацию по Android, что на самом деле делают эти методы класса Service и когда они вызываются. Это не завершенный код. Вы сами внедрили локализатор в это. Это просто пример программы, которая показывает обычный класс:

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();
    }

}


}
...