【问题标题】:How do i turn off GPS Location automatically after certain time if it is not used?如果不使用,如何在一定时间后自动关闭 GPS 定位?
【发布时间】:2017-04-05 06:26:24
【问题描述】:

实际上,当他们开始会议时,我在我的应用程序中使用了我的分销商和零售商 GPS 位置,并且 GPS 在他们没有结束会议之前不会关闭,因为我必须获取他们的结束会议位置。但这会导致他们手机的电池出现问题。有什么方法可以在他们的开始会议和结束会议之间自动关闭 GPS?

【问题讨论】:

标签: android gps java-threads android-gps


【解决方案1】:

我认为现在无法以编程方式打开/关闭 GPS。此功能在早期的 android 版本中可用,但我认为现在谷歌已经停止了它。 相反,您可以将用户引导至 GPS 设置页面,以便用户自己选择是否要公开其位置。 你可以通过调用来做到这一点:

startActivity(上下文,新 意图(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

现在很多人都对分享他们的位置持怀疑态度,这就是为什么发送 GPS 位置必须征得用户同意的原因。

【讨论】:

  • 只是一个评论,关于人们对共享位置持怀疑态度,一个更好的解决方案,然后只是全面禁用它。禁用它,但允许可能愿意让应用程序打开和关闭它的用户可以去并授予该应用程序权限的设置。那些可能希望在我们信任(或我们编写)的 1 或 2 个应用程序上发生这种情况的用户仍然可以使用有用的功能,而不是把婴儿和洗澡水一起扔出去。
【解决方案2】:

你可以用这个

private void turnGPSOn(){
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")); 
    sendBroadcast(poke);
}}private void turnGPSOff(){
String provider = Settings.Secure.getString(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")); 
    sendBroadcast(poke);
}}

当您想禁用 gps 或在需要时启用它时调用此函数,您可以从 How can I enable or disable the GPS programmatically on Android? 找到更多信息

【讨论】:

  • 这是在单独线程上给出的旧答案。这不适用于更高的 android 版本,例如 4.2
  • 它在棒棒糖中不起作用。您需要明确要求用户启用或禁用 GPS。
猜你喜欢
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 2020-12-29
  • 1970-01-01
  • 2020-12-06
相关资源
最近更新 更多