【发布时间】:2010-08-28 07:56:55
【问题描述】:
我刚开始玩安卓设备,从 GPS 监听器获取更新时遇到问题。
首先是代码,所以你可以检查我是否做对了所有事情:
在 AndroidManifest.xml 我有:
<uses-permission android:name="android.permission.LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
位置监听器被定义为 Activity 的私有成员:
private LocationListener mLocationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location pLocation) {
double lLatitude = pLocation.getLatitude();
double lLongitude = pLocation.getLongitude();
mGpsTextView.setText ("Longitude" + Double.toString(lLongitude) + " Latitude: " + Double.toString(lLatitude));
}
@Override
public void onProviderDisabled(String provider) {
mGpsTextView.setText ("Provider disabled");
}
@Override
public void onProviderEnabled(String provider) {
mGpsTextView.setText ("Provider enabled");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status)
{
case LocationProvider.OUT_OF_SERVICE:
mGpsTextView.setText("GPS out of service");
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
mGpsTextView.setText("GPS temorarily unawalible");
break;
case LocationProvider.AVAILABLE:
mGpsTextView.setText("GPS avalible");
break;
default:
mGpsTextView.setText("GPS crazy");
}
}
};
在“onResume”方法中,我获取 LocationManager 并注册我的监听器:
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
mLocationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0.0f, mLocationListener);
在“onPause”中,我删除了监听器
mLocationManager.removeUpdates(mLocationListener);
然后,当我使用 geo fix 在模拟器上测试代码时 - 一切正常。但是当我在手机上部署我的应用程序时,代码无法正常工作。当提供者被禁用时,“mGpsTextView”上的文本是“提供者被禁用”——所以没关系。但是,当我在启用 gps 提供程序的情况下运行应用程序时,“mGpsTextView”上的文本并没有收到任何更新(使用调试器检查 - 未调用 onLocationChanges)。
知道可能出了什么问题吗?
【问题讨论】:
-
您是否在此处粘贴了错误的代码?您似乎没有在任何地方提供 LocationListener。
-
是的,我只是复制粘贴了错误的代码
-
ph,问题可以结束了 - 我刚刚离开设备 30 分钟,它开始接收更新。廉价手机的魔力……抱歉;)
标签: android