2011-08-03 218 views
4

我還有什麼:目前我的應用正在通過gps提供位置信息。以編程方式關閉GPS

我想要的: Gps在我退出應用程序後自動關閉。因爲它不斷告訴我的位置,一次又一次,看起來很奇怪,也GPS消耗大量的電池。

+0

http://stackoverflow.com/questions/4721449/enable-gps-programatically-like-tasker – Rasel

+0

做這項工作? – Noman

+0

是的,我也使用它 – Rasel

回答

10

綜觀上述評論跟帖,似乎它可以以編程方式關閉GPS(但只看到12 Upvotes)

但是,如果你從你的應用程序切換關閉GPS編程,如果其他應用程序使用的GPS服務?

解決會像

的Android開放Settings,然後告訴用戶,當他從應用程序退出要關閉GPS ...

爲此,你可以這樣做:

Intent i = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
startActivity(i); 

OR

你可以嘗試像

locationManager.removeUpdates(myLocationListener); 
locationManager = null; 

這爲這個應用程序關閉GPS,但其仍然可以通過其他應用程序使用。

+0

現在還可以。請參閱評論文章。 – Rasel

+0

現在我該怎麼辦?有可能嗎? – Noman

+0

這是可能的,但我沒有發現任何事情相信現在的可能性在將來 – Rasel

2

此代碼可以改變你的gps.But它不記錄

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); 
2

即使RASEL發佈的鏈接包含了一些代碼,這可能會工作,你應該記住這些代碼是利用具有安全漏洞已經修好(http://code.google.com/p/android/issues/detail?id=7890),因此不應該在不久的將來工作。

+0

所以你的意思是我不應該使用它? – Noman

+0

@Joachim:我已經告訴過, – Rasel

+0

@Rasel:好像我讀過那樣。抱歉。 –

2

如果你想啓用GPS programmaticaly然後複製並粘貼這個代碼在你的項目,其工作正常。

 final Intent i = new Intent(); 
     i.setClassName("com.android.settings","com.android.settings.widget.SettingsAppWidgetProvider"); 
     i.addCategory(Intent.CATEGORY_ALTERNATIVE); 
     i.setData(Uri.parse("3")); 
     sendBroadcast(i); //if you are in broad cast receiver activity then use context.sendBroadcast(i) 
+0

很酷...感謝隊友 – Noman

+0

似乎現在不適合我,但感謝您的建議。 – eWizardII

+1

**這個**解決方案和** Rasel **所提供的解決方案僅適用於Android 2.3.6 - 而不是v3.xx或v4.xx--儘管有一些建議,這個_vulnerability_已被重新引入Android 4。1.2,它可能會再次工作! – ChuongPham