如何打开和关闭GPS?

时间:2013-12-19 00:26:41

标签: android gps location

Android是否允许以编程方式打开和关闭GPS?

我正在使用代码[functions turnGPSon()& turnGPSoff()]下面(from here

我正在使用“GPSStatus()”功能来检测GPS是否开启。

两个问题:

  1. turnGPSoff()不起作用。 turnGPSon()能够打开GPS('我想',因为我可以看到左上方状态图标中的GPS符号,但控制中心的GPS按钮[galaxy s3]虽然没有突出显示,但我得到了准确的信息)

  2. GPSStatus()总是返回false - 我检查的方法是否正确?

  3. 我的目标只是以编程方式打开和关闭GPS? (Android是否允许以编程方式打开和关闭GPS?如答案here中所述)

        private boolean GPSStatus() {
        ContentResolver contentResolver = getBaseContext().getContentResolver();
        boolean gpsStatus = Settings.Secure.isLocationProviderEnabled(contentResolver,    LocationManager.GPS_PROVIDER);
        return gpsStatus;
        }
    
    
        public void turnGPSOn()
        {        
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.putExtra("enabled", true);
        this.sendBroadcast(intent);
    
        String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        if(!provider.contains("gps")){ //if gps is disabled
            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"));
            this.sendBroadcast(poke);
        }
    }
    
    
    
    // automatic turn off the gps
    public void turnGPSOff()
    {
    
        myLogger.displayMsgs("in turnGPSoff()", true, true);
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.putExtra("enabled", false);
        sendBroadcast(intent);
    
    }
    

1 个答案:

答案 0 :(得分:0)

重复,原始here

答案:

(你需要rootaccess才能完全控制,所以几乎不可能)

原始答案:

  1. 启用/禁用GPS是设计上的异步过程。您可以收听禁用和重新启用GPS的尝试。但是你无法阻止实际的禁用。 GPS将关闭一秒钟或几秒钟。 或者您必须设计自己的ROM,实现某种GPS锁定,仅适用于您自己的应用程序。
  2. 要获得SuperAdmin权限,您需要a)root和b)设计安装在/ system / app目录中的小型存根应用程序。 作为以上所有内容的示例,您可以从https://github.com/sms2000/GPSToggler获取GPSToggler。它可以或多或少地工作,可以满足您的需求。