我正在研究示例应用程序。在这个应用程序中,我想获得更新的位置纬度和经度,当用户在一个方向上移动Android移动。我已经实现了如下位置管理器类:
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();
}
}
}
如何从背景获取更新的位置纬度和经度?
请任何人帮助我。答案 0 :(得分:3)
您需要在服务中“实施”'LocationListener'。
查看http://androidgps.blogspot.com/2008/09/simple-android-tracklogging-service.html
答案 1 :(得分:2)
如果您打算在应用程序未运行时获取纬度和经度,则可以使用在后台获取经度和纬度的服务,并执行您想要的任何任务。并且不要忘记在不需要时删除更新,因为在设备电池使用方面获取更新是非常昂贵的操作。
还有一点,您不需要检查空值的位置,因为只有在您的提供商获取位置时才会调用onLocationChanged()。
虽然我也是android新手。这可能对你有所帮助。你必须看到android文档这些Service类方法实际上做什么以及何时调用它们。 这不是完整的代码。你自己实现了locationlistener。这只是一个显示正常类的示例程序:
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();
}
}
}