我正在开发一个监控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更新位置,一切都像魅力一样......
答案 0 :(得分:0)
这可能无法完全回答您的问题,但可能有所帮助:
ACCESS_COARSE_LOCATION
和ACCESS_FINE_LOCATION
LocationListener
仅在活动运行时存在。这可能不是你想要的,你应该考虑在其他地方注册位置变化。 onStatusChanged
,onProviderEnabled
,onProviderDisabled
的结果,并查看是否有任何相关信息。答案 1 :(得分:0)
可能有一个非常简单的解决方案,当你已经考虑过这个问题时我很抱歉,但重新启动手机有时会为我带来魔力。
一点解释:我在位置感知服务上工作了几个月,我也遇到了这类错误。似乎Google在某些时候在后台更新了它的库,只有重新启动才能使它再次运行。我有6个具有完全相同错误的Nexus5手机,并且重新启动了所有这些工作。