即使我安装了OnPause代码来停止GPS服务,GPS也不会停止。这是我的代码。
@Override
protected void onPause() {
if(lm != null) {
lm.removeUpdates(ll);
}
ll = null;
lm = null;
super.onPause();
}只要lm和ll被全局声明为受保护变量,这段代码就可以正常运行。问题是,在我离开程序后,GPS图标仍然亮着。如何关闭GPS?我已经在手机和模拟器上测试过了。
发布于 2012-07-17 10:13:21
我的问题是,位置管理器和位置侦听器名称在更改时位置代码中被重新定义,因此它们不是全局语句中引用的全局名称。我从YouTube教程中复制了这段代码,我假设其他许多人也有同样的问题。一旦我删除了重新定义,而不是GPS几乎立即关闭时,屏幕是回来箭头。事实上,GPS走得太快了,这是我现在需要解决的问题。
发布于 2012-07-10 15:34:51
正如doc所说的那样,removeUpdates(LocationListener listener):
使用给定的LocationListener删除当前活动位置更新的任何当前注册。
当前代码仅移除当前活动的位置更新的任何当前注册状态栏中的给定LocationListener不停止GPS或移除图标.so如果您想要停止GPS,则有两种解决方案
第一个解决方案: stop by code (仅适用于Android2.3以下版本):
try{
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
catch(Exception e)
{
Log.d("Location", " exception thrown in enabling GPS "+e);
}Manifest.xml中的权限:
android.permission.WRITE_SECURE_SETTINGS第二个解决方案:启动Gps设置活动:
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 1);发布于 2012-07-10 14:56:29
在您的onPause()中使用它
protected void onPause()
{
super.onPause();
mylocaationoverlay.disableCompass();
removeLocationUpdates();
}这将是您的removeLocationUpdates()
public void removeLocationUpdates()
{
if(locationManager_ != null && myLocationListener_ != null)
locationManager_.removeUpdates(myLocationListener_);
}https://stackoverflow.com/questions/11408018
复制相似问题