在用户睡觉时处理我的 BLE 监控应用程序上的 Android-Doze 模式

2024-01-04

我制作了一个在睡眠时间监控人的健康状况的设备,它通过 BLE 连接到智能手机。

它与 iOS 应用程序配合得很好。 但自从 Android 世界出现 Doze 模式以来。 这真的很难处理,因为我的设备在他的睡眠时间工作。

主要功能是它可以检测特定的危险并在用户睡觉时通知该设备。当它发生时我需要网络连接。

许多文章告诉我,如果我的应用程序在白名单中,即使在打瞌睡模式下我也可以使用网络。但在我测试Doze模式后,情况似乎并非如此。 我对吗?

我可以确保当我触发时可以在列表中找到我的应用程序

adb shell dumpsys deviceidle

让我的应用程序正常工作可以采取的最佳方法是什么?

  • 前台服务
  • 使用 SetExactAndAllowWhileIdle 的警报管理器。
  • GCM(这意味着推,对吧?)
  • 还要别的吗

任何提示都会帮助我。 谢谢。

Edit

不幸的是,我使用 GCM 进行了测试,但它只能在短时间内唤醒我的应用程序。这意味着我必须发送尽可能多的 GCM 以使其保持清醒。我不认为我可以使用它。


许多文章告诉我,如果我的应用程序在白名单中,即使在打瞌睡模式下我也可以使用网络。但在我测试Doze模式后,情况似乎并非如此。我对吗?

你看起来不太对劲。当您的应用程序位于白名单中时,解除打瞌睡的限制之一是在打瞌睡活动时使用网络的能力。

列入白名单的应用程序可以在打瞌睡和应用程序待机期间使用网络并保持部分唤醒锁定。但是,其他限制仍然适用于列入白名单的应用程序,就像对其他应用程序一样。例如,列入白名单的应用程序的作业和同步被推迟(在 API 级别 23 及以下),并且其常规 AlarmManager 警报不会触发。

From here https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases.

换句话说:如果您在白名单上,您应该能够在打瞌睡时使用网络。

让我的应用程序正常工作可以采取的最佳方法是什么?

考虑到您的应用程序是一个运行状况监视器,因此应该能够持续或至少非常定期地完成其工作,您可以将该功能放在前台服务中。前台服务不受打瞌睡的影响。

您应该意识到,您应该有充分的理由使用前台服务,因为用户知道它们,但我认为您有一个具有健康监控等功能的服务。

注意:您应该仅将前台服务用于用户期望系统立即或不间断执行的任务。此类情况包括将照片上传到社交媒体,或者即使音乐播放器应用程序不在前台也播放音乐。您不应仅仅为了阻止系统确定您的应用程序处于空闲状态而启动前台服务。

From here https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在用户睡觉时处理我的 BLE 监控应用程序上的 Android-Doze 模式 的相关文章

  • Firebase 管理 SDK Android

    在 Android 中初始化 Firebase Admin SDK 的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedIns
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • 如何将安卓手机从睡眠状态唤醒?

    如何以编程方式将 Android 手机从睡眠状态唤醒 挂起至内存 我不想获取任何唤醒锁 这意味着手机在禁用 CPU 的情况下进入 真正的 睡眠状态 我想我可以使用某种RTC 实时时钟 机制 有人有例子吗 Thanks 为了让Activity
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 如果我们使用后退按钮退出,为什么 Android 应用程序会重新启动?

    按住主页按钮并返回应用程序时 应用程序不会重新启动 为什么使用后退按钮会重新启动 如果我们使用后退按钮退出 有什么方法可以解决在不重新启动的情况下获取应用程序的问题吗 请帮忙 当您按下Home按钮 应用程序将暂停并保存当前状态 最后应用程序
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项

随机推荐