首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPS OnPause代码不能关闭GPS

GPS OnPause代码不能关闭GPS
EN

Stack Overflow用户
提问于 2012-07-10 14:48:00
回答 3查看 2K关注 0票数 5

即使我安装了OnPause代码来停止GPS服务,GPS也不会停止。这是我的代码。

代码语言:javascript
复制
    @Override
    protected void onPause() {
        if(lm != null) {
            lm.removeUpdates(ll);
        }
        ll = null;
        lm = null;
        super.onPause();
    }

只要lm和ll被全局声明为受保护变量,这段代码就可以正常运行。问题是,在我离开程序后,GPS图标仍然亮着。如何关闭GPS?我已经在手机和模拟器上测试过了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-17 10:13:21

我的问题是,位置管理器和位置侦听器名称在更改时位置代码中被重新定义,因此它们不是全局语句中引用的全局名称。我从YouTube教程中复制了这段代码,我假设其他许多人也有同样的问题。一旦我删除了重新定义,而不是GPS几乎立即关闭时,屏幕是回来箭头。事实上,GPS走得太快了,这是我现在需要解决的问题。

请参阅lm.removeUpdate(ll); not releasing updates

票数 1
EN

Stack Overflow用户

发布于 2012-07-10 15:34:51

正如doc所说的那样,removeUpdates(LocationListener listener)

使用给定的LocationListener删除当前活动位置更新的任何当前注册。

当前代码仅移除当前活动的位置更新的任何当前注册状态栏中的给定LocationListener不停止GPS或移除图标.so如果您想要停止GPS,则有两种解决方案

第一个解决方案: stop by code (仅适用于Android2.3以下版本):

代码语言:javascript
复制
  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中的权限:

代码语言:javascript
复制
android.permission.WRITE_SECURE_SETTINGS

第二个解决方案:启动Gps设置活动:

代码语言:javascript
复制
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 1);
票数 1
EN

Stack Overflow用户

发布于 2012-07-10 14:56:29

在您的onPause()中使用它

代码语言:javascript
复制
protected void onPause() 
{
    super.onPause();
    mylocaationoverlay.disableCompass();
    removeLocationUpdates();
}

这将是您的removeLocationUpdates()

代码语言:javascript
复制
public void removeLocationUpdates()
{
    if(locationManager_ != null && myLocationListener_ != null)
        locationManager_.removeUpdates(myLocationListener_);
}

或者试试这个:onPause to stop LocationManager

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11408018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档