2014-09-02 94 views
-1

我正在開發一個應用程序,以使用融合的位置提供程序在谷歌地圖上跟蹤我自己現在我想要在操作欄上打開/關閉位置服務的按鈕。我如何打開和關閉位置服務?

我試過下面的代碼,但它說它已被分解。有沒有更好的方法來做到這一點?

public void turnGPSOn() 
{ 
    Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); 
    intent.putExtra("enabled", true); 
    ctx.sendBroadcast(intent); 

    String provider = Settings.Secure.getString(ctx.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.ctx.sendBroadcast(poke); 


    } 
} 
// automatic turn off the gps 
public void turnGPSOff() 
{ 
    String provider = Settings.Secure.getString(ctx.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
    if(provider.contains("gps")){ //if gps is enabled 
     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.ctx.sendBroadcast(poke); 
    } 
} 

}

+0

您只能在根用手機上執行類似的代碼。 – 2014-09-02 18:30:28

回答

1

現在我想有操作欄上的按鈕開啓/關閉定位服務。

您的代碼不會嘗試「打開/關閉位置服務」。它嘗試啓用和禁用位置服務。幸運的是,這是不可能的,因爲明顯的隱私和安全原因。用戶可以通過設置應用程序或可能通過其他特定於設備的手段來啓用和禁用用戶想要的任何位置技術。

您的應用程序控制是否通過LocationClient接收或未收到位置更新。播放服務引擎反過來將使用該信息來確定GPS無線電是否需要通電。

+0

謝謝你真的很棒,我完全知道我現在要做的事情:D – 2014-09-02 18:16:48