GPS不会使用LocationManager / LocationListener启用

时间:2014-06-19 13:50:55

标签: android gps locationmanager locationlistener nexus-4

我正在开发一个监控GPS速度的简单应用程序。今天早上我安装了几个GPS位置模拟器来测试我的应用程序,似乎没有人运行良好。现在当我使用ADB在我的N4上调试我的应用程序时,卸载了所有这些并且(我不知道这是否在任何时候相关),当我调用.requestLocationUpdates时,GPS不会打开。 gps图标没有显示在通知栏中,也没有检索到数据,onLicationChanged从未被调用,并且函数.isProvider启用后返回false ..

我完全将我的应用程序重建为最简单的形式。我直接在onCreate覆盖上调用从android.developper文档中复制的代码。

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_speed_monitoring);
// Acquire a reference to the system Location Manager
LocationManager locationManager = (LocationManager) this .getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {

        location.getLatitude();
        Toast.makeText(getApplicationContext(), "Current speed:" + location.getSpeed(), Toast.LENGTH_SHORT).show();
    }
    public void onStatusChanged(String provider, int status, Bundle extras) { }
    public void onProviderEnabled(String provider) { }
    public void onProviderDisabled(String provider) { }
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1000, locationListener); 
}

现在我想知道这是否与我的代码或我的Android设备有关,或两者兼而有之。经过测试的谷歌地图,它会触发GPS图标并找到我的位置而没有问题,我现在在Android模拟器上测试它,会不断更新。

哦,而且,我还没有找到安卓工作室。

谢谢。

编辑:在模拟器上触发GPS图标,可能是我手机中的设置,但是什么原因导致这种情况?为什么其他GPS应用程序有效?

编辑2:我的应用程序在模拟器上完美运行,通过telnet geo fix更新位置,一切都像魅力一样......

2 个答案:

答案 0 :(得分:0)

这可能无法完全回答您的问题,但可能有所帮助:

  1. 为了测试GPS相关代码我建议您尝试http://www.genymotion.com/,它是最快的Android模拟器,它有一个很酷的GPS测试小部件,它是完全值得的(有一个免费版本)。
  2. 确保您拥有正确的Android权限,即ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION
  3. 请注意,您的LocationListener仅在活动运行时存在。这可能不是你想要的,你应该考虑在其他地方注册位置变化。
  4. 同时尝试记录onStatusChangedonProviderEnabledonProviderDisabled的结果,并查看是否有任何相关信息。
  5. 最后,请看一下这个问题LocationListener of NETWORK_PROVIDER is enabled but , onLocationChanged is never called

答案 1 :(得分:0)

可能有一个非常简单的解决方案,当你已经考虑过这个问题时我很抱歉,但重新启动手机有时会为我带来魔力。

一点解释:我在位置感知服务上工作了几个月,我也遇到了这类错误。似乎Google在某些时候在后台更新了它的库,只有重新启动才能使它再次运行。我有6个具有完全相同错误的Nexus5手机,并且重新启动了所有这些工作。