我有个问题。在我的应用程序中,我需要用户的当前位置。当我们有一个位置时(当我得到一个位置usig方法locationManager.getLastKnownLocation时),它工作得很好,但是当我重启我的手机,位置消失了(我假设现金是空的),我得到这个日志并强制关闭应用程序按钮。我点击一个按钮,我的应用程序重新启动,然后它工作正常……我现在知道返回null的位置有问题...这是日志:
08-25 10:02:55.000: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:55.449: DEBUG/libgps(2006): onUnsol: cmd 0x04 plen 57
08-25 10:02:55.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: num_sv 0
08-25 10:02:55.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: used_in_fix_mask 00000000
08-25 10:02:55.503: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:55.503: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:55.503: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:56.006: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:56.006: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:56.006: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:56.449: DEBUG/libgps(2006): onUnsol: cmd 0x04 plen 57
08-25 10:02:56.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: num_sv 0
08-25 10:02:56.449: DEBUG/libgps(2006): oem_unsol_gps_measurement: used_in_fix_mask 00000000
08-25 10:02:56.505: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:56.505: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:56.505: ERROR/GPS(2006): gen_timer_add_locked
08-25 10:02:57.009: DEBUG/libgps(2006): request_location_fix_callback: session status 1
08-25 10:02:57.009: DEBUG/libgps(2006): request_location_fix_callback: GPS session is ongoing.
08-25 10:02:57.009: ERROR/GPS(2006): gen_timer_add_locked
发布于 2011-08-26 20:11:49
我设法解决了这个问题。我创建了没有按钮的AlertDialog并启动了requestLocationUpdates。在locationListener,当位置改变时,我取消了AlertDialog,这解决了我的问题:D谢谢jainal和Torsten……
发布于 2011-08-25 16:30:21
当你重启手机时,所有的非持久数据都会被清除,就像variable.If一样,你想保存你的位置,然后你应该使用数据库/共享首选项。此外,您还可以获取null
location.So,您应该不断检查以处理。
编辑过的
你可以使用Timer类。
试着这样做:
Timer timer1;
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
timer1=new Timer();
timer1.schedule(new GetLastLocation(), 20000);
以下代码将在20秒后执行。
class GetLastLocation extends TimerTask {
@Override
public void run() {
timer1.cancel();
lm.removeUpdates(locationListener)
Location loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
}
发布于 2011-08-25 16:56:03
看看A Deep Dive Into Location ,你就会知道很多关于如何定位的信息。
https://stackoverflow.com/questions/7187085
复制相似问题