我在将LocationListener应用于手机时遇到了问题。当我在模拟器上运行我的代码时,一切正常,每次我执行一个geo fix操作时都会调用回调函数onLocationChanged()。
然而,在我的手机上运行应用程序时,却没有任何反应。回调函数从未被调用过。我的设置中已经启用了GPS和无线网络进行定位,应用程序也获得了位置权限的使用许可。
此外,当我从LocationManager对象中调用getLastKnownLocation()方法时,我的应用程序会崩溃。(仍然是在我那该死的手机上)。即使我试图捕获导致它崩溃的异常,它仍然会崩溃,所以我甚至无法获取任何有关导致它崩溃的信息。这非常令人沮丧。
LocationManager.getBestProvider()返回GPS,而且当我打开谷歌地图时,它立刻能够找到我的位置。这到底是怎么回事?我是否可以找出它在我的手机上为什么崩溃的原因?
private void setupLocListener(){
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);
c.setAltitudeRequired(false);
c.setBearingRequired(false);
c.setSpeedRequired(false);
c.setCostAllowed(false);
lm.requestLocationUpdates(lm.getBestProvider(c,true), 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location arg0) {
map.setLocation(arg0);
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) { }
});
}
adb logcat
、DDMS 或 Eclipse 中的 DDMS 视角来检查 LogCat 并查看与您的崩溃相关联的堆栈跟踪。 - CommonsWare