【问题标题】:find out if power saving mode enabled - Android SDK查明是否启用了省电模式 - Android SDK
【发布时间】:2013-02-28 10:42:03
【问题描述】:

我有一个在 Android 上运行的应用程序,它仅使用 webview 来显示移动 web 应用程序,并且在某些时候使用设备的 GPS 来获取他们的位置。

我有一个自定义的 ChromeWebClient 等,它很好地获得了它们的位置,除了在启用省电模式的设备上? SDK/API 中有没有让我能够确定用户是否启用了此功能并相应地建议他们? 我在文档中找不到任何内容,所以我认为不值得但值得一试,

干杯,

【问题讨论】:

  • Power saving mode 是什么意思?
  • @RaghavSood 例如在 Galaxy S4 上。该设备具有可以启用的“省电模式”,并且只有在启用此功能时,我才能从 Web 应用程序获取 GPS 位置。如果不是省电模式,是否可以查看应用是否允许 GPS 定位?
  • AFAIK,这不是官方的AOSP功能,所以公共SDK不太可能有观察它的方法。三星可能在设置类中添加了 API 或选项,但我不能肯定。
  • 为什么不直接检查定位服务的可用性?
  • @JermaineXu 按照下面的答案完成。谢谢

标签: android


【解决方案1】:

芦苇之后

根据我的经验,三星和 HTC 都是以最不可预测的方式修改 Android 操作系统的制造商之一。他们添加了新的功能和模式,例如 4G 切换启动器小部件和“省电模式”。他们修改了记录在案的 SDK 方法的权限要求,即在三星设备上打开蓝牙,您的应用需要拥有额外的android.permission.BLUETOOTH 权限,而普通 Android 只需要android.permission.BLUETOOTH_ADMIN。还有更多。

长话短说,正如@RaghavSood 所指出的,“省电模式”不是官方的 AOSP 功能,也无法通过官方 SDK 检测到它。不过,有一种可能的方法可以解决它。我相信您的应用程序很可能在省电模式下行为不端,因为此模式会关闭 GPS。您可以通过在设置中配置省电模式来禁用 GPS 禁用来确认这一点(无法更好地表达这一点,抱歉)-first link from google with steps。然后测试应用程序。它有效吗?如果是,那么您就是问题的根源,现在您的工作是让用户知道您的应用在没有 GPS 的情况下将无法运行。您可以将一些代码放入您的应用程序以检测是否启用了 GPS 服务,如果未启用则显示警报对话框。您的活动中的代码可能如下所示:

LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    //Show a notification prompting user to switch on GPS.
}

您可以更加精细,让您的应用检测设备制造商以在所有三星设备上显示自定义消息。

【讨论】:

  • 我接受了您的解决方案,因为这是可行的解决方案 :) 感谢您的详细回复 :) Burrows
猜你喜欢
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多