2013-12-19 153 views
1

Android是否允許GPS以編程方式打開和關閉?如何打開和關閉GPS?

我使用下面(from here

我使用的函數 「GPSStatus()」 使用的代碼[功能turnGPSon()& turnGPSoff()],以檢測是否GPS是上或沒有。

兩個問題:

  1. turnGPSoff()不工作。turnGPSon()能夠打開GPS('我想',因爲我可以看到左上方狀態圖標中的GPS符號,但控制中心[galaxy s3]中的GPS按鈕雖然沒有突出顯示,但我準確無誤())

  2. GPSStatus()總是返回false - 我檢查正確的方式嗎?

我的目標只是在語法上打開和關閉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); 

} 

回答

0

重複,原來here

答:

(您將需要rootaccess完全控制,這幾乎是不可能的)

原來的答覆:

  1. 啓用/禁用GPS是通過設計的異步處理。您可以聆聽嘗試禁用並重新啓用GPS。但是你不能阻止實際的禁用。 GPS將關閉一秒鐘或幾秒鐘。 或者你必須設計你自己的ROM,爲你的應用程序實現某種GPS鎖定。

要獲得超級管理員權限,您需要a)root和b)設計安裝在/ system/app目錄中的小型存根應用程序。 作爲以上所有示例,您可以從我的GPS撥號器https://github.com/sms2000/GPSToggler中獲取。它可以或多或少地工作,並可以滿足您的需求。