当我需要一个位置android时出错

时间:2011-08-25 08:17:04

标签: android gps location runtime-error

我有问题。在我的应用程序中,我需要用户的当前位置。当我们有一个位置时(当我得到一个位置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

3 个答案:

答案 0 :(得分:0)

当您重新启动手机时,所有非持久性数据都将被清除,就像变量一样。如果您想保存您的位置,那么您应该使用database / sharedPreferences。 此外,您可以获得null位置。所以您应该继续检查以处理。

被修改

您可以使用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);
        }
}

答案 1 :(得分:0)

请查看A Deep Dive Into Location ,了解如何获取位置。

答案 2 :(得分:0)

我设法解决了这个问题。我没有按钮创建AlertDialog并启动了requestLocationUpdates。在locationListener中,当位置改变时,我取消了AlertDialog并解决了我的问题:D 谢谢jainal和Torsten ......