2011-08-03 132 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