问题标签 [doze]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何避免三星设备的电池优化?(S6、S7 和 S8)
我有一个 GPS 跟踪 Android 应用程序,当有人需要用户的位置时,它会接收连续的推送消息。
每次收到推送时,我都会在他接收推送消息时启动定位服务,在 X 时间内发送位置。
问题始于 android Doze 系统,它阻止了 http 请求。我可以收到消息,但我永远无法发送我当前的位置(我收到了 http 连接超时和对 Google 的 ping 错误)。但我可以通过ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS请求解决它,并以编程方式将应用程序添加到电池白名单中。
现在,该应用程序在所有设备上都可以正常工作,除了 S6 上的三星设备,这些设备具有“智能管理器”系统。我尝试将应用手动添加到三星的电池白名单中(设置 -> 设备维护 -> 电池 -> 未监控的应用),但问题仍然存在。
如果我让设备关闭屏幕并且不充电,在一段时间内,它会停止发送位置,但他仍然会收到推送消息。
谁能帮我一个神奇的解决方案?我看到了一个所谓的“包列表”,其中包含许多三星自动将其包含在白名单中的应用程序(例如 Facebook、Whatsapp、Life360),但我找不到将我的应用程序自动添加到此列表中所需要做的事情。
android - Android打盹模式中断WebRTC调用
当 de app 在后台运行一段时间(通常大约半小时)时,连接断开。即使我创建了部分唤醒锁定并将应用程序放在打盹白名单中,日志也没有显示任何内容。
这会导致媒体流停止,这不是我们想要的。由于被叫方随后收到挂断消息,但应用程序没有,媒体只是停止流动。
在尝试调试时,我还注意到 logcat 在一段时间后断开连接(可能是 mac 问题上的 android studio。对此有更多问题)。所以调试这个非常困难。
android - 克服android中的打瞌睡以进行音频流式传输
我对android开发很陌生。我目前正在为我们公司的 android 应用程序工作,它是一个实时(低延迟)音频接收器。到目前为止,该应用程序运行良好。但是对于 Android 版本 >= Marshmallow,由于打瞌睡效果,网络会断开连接并且流媒体会停止。我浏览了几个论坛并使用了“intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);” 设置禁用电池优化。此外,我们会显示一个应用内对话框,以告知用户该应用未针对电池进行优化,他们在设置选项中进行了更改。这对谷歌来说足够了吗(https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases) ? 因为在某些论坛中,我读到谷歌如果禁用电池优化,就会暂停应用程序。请提供您的意见。
android - MediaPlayer:是否允许白名单电池优化?
我正在构建一个时钟收音机应用程序,在我的设备上运行 Android 7.1.1 后几分钟(大约 2.5 - 4 分钟)当用户按下电源按钮关闭显示器时停止播放。
我相信这是由于设备进入了打盹模式。即使在屏幕关闭时,我的活动也会保留 wifi 和唤醒锁以播放无线电流。
我阅读了有关打盹模式的信息页面,并找到了有关将“允许的用例”(如 voip 应用程序等)列入白名单的章节。
该页面声明:“注意:除非应用的核心功能受到不利影响,否则 Google Play 政策禁止应用请求直接豁免 Android 6.0+(打盹和应用待机)中的电源管理功能。 ”
由于他们的示例中没有任何“媒体播放应用程序”,我不确定是否允许主动要求用户(通过意图)将我的时钟收音机应用程序添加到他们的白名单中。
当然,我不希望 Google 从 Play 商店中删除我的应用程序,所以 - 任何人都可以确定它是否适合列入白名单吗?
我的意思是——当然,当打盹模式忽略唤醒锁定并且应用程序停止播放时,我的核心功能(播放无线电流)会受到不利影响。所以我认为在这种情况下必须允许请求许可?
(这个功能的想法是,允许用户起床做他们早上的事情,同时仍然听“警报”流,直到他们完成并手动取消警报 - 但在此期间他们肯定想关闭展示..)
任何(被证明是正确的)信息将不胜感激。
android - setAlarmClock() 在打盹模式下触发得太晚
我很难让我的收音机闹钟按预期工作,我在这里阅读了很多关于该主题的帖子,但不幸的是,没有一个对我有帮助。
这种区分我在 stackoverflow 上找到的 API 级别的方法并将其放在我的calcNextAlarm()
函数中(加上一些用于调试的日志消息)以正确设置警报,无论设备上使用什么 API:
根据 Log.d 消息,我可以看到,在我的 Android 7.1 设备上,第一种方法setAlarmClock()
正在执行以在接收器中设置警报。
经过 3 周的不成功测试和编码后,我变得非常绝望——我今天的闹钟再次迟到了 4 分钟——这永远不会发生,根据打瞌睡模式培训页面:
使用 setAlarmClock() 设置的警报继续正常触发——系统在这些警报触发前不久退出打盹。
在我的 7.1 手机上,当我将闹钟设置为“现在 +5 或 6”分钟时,闹钟甚至会晚 20 秒到 1:40 分钟。谁能告诉我如何真正及时完美地关闭警报?
android - 在模拟器上打开打盹模式时它不起作用
当我使用 adb shell 在 android 模拟器上打开打盹模式时,它只是冻结。我无法重新启动它,模拟器重新启动也无济于事。
我使用以下命令打开打盹模式:
以及以下将其关闭:
android - Android 应用程序无法在打盹模式下运行
我正在 Android Nougat 上构建一个应用程序,它将持续工作(在活动模式和打盹模式下(当手机处于睡眠状态时))。问题是在大约 6 小时不活动后,Android 会停止应用程序。
有一个带有活动和服务的 UI。该服务使用蓝牙、网络和记录到本地数据库。大约每分钟一次,蓝牙工作,结果记录在本地数据库中。之后,数据库中的数据通过网络发送。该服务运行 6 小时,然后停止工作。显示通知,但服务不工作。manager.GetRunningServices 方法还表示服务已启动但没有服务迹象。
我尽你所能:
- 该服务使用 StartForeground 方法
- 使用了wakeLock - 无济于事
- 使用白名单 - 延长了几个小时,但最终,服务停止工作
- 使用了警报管理器。它一直在工作,但 OnReceive 中的代码表明服务正在运行,但实际上并非如此。
- 我在一个单独的进程中启动了该服务,以便他使用尽可能少的内存,但这也无济于事。
也许有人对此有想法?
谢谢你。
android - 打盹白名单和 deviceidle.xml
我正在尝试将我的包裹添加到打盹白名单中。
使用($ adb shell dumpsys deviceidle whitelist +PACKAGE)
,我可以将我的包裹添加到白名单中,
这个命令使file /data/system/deviceidle.xml.
现在,我很好奇谁生成deviceidle.xml.
有谁知道deviceidle.xml
吗?
android - Android NotificationListenerService 后台执行限制/Doze
随着 Android M 中引入 Doze,Android 在 Doze 期间对后台执行的限制越来越多。有人可以详细说明在扩展 Android 自己的服务时是否同样适用。例如 NotificationListenerService?
我正在使用它
当设备进入打瞌睡状态时,它会在几分钟后停止工作。我尝试过使用 AlarmManager、JobScheduler、JobIntentService 和普通 IntentService。当设备深度睡眠时,它们都不起作用。
附带说明一下,我的设备是华为 Mate 10 Pro。他们以积极的任务管理而闻名。但是我已将我的应用程序列入白名单,禁用了所有可以从华为方面禁用的东西,这会在后台杀死应用程序。
关于在设备打瞌睡时如何调用 AsyncTask 的任何建议(相对于 Google 关于维护窗口的规则,我知道在打瞌睡下 Google 会延迟网络请求、唤醒锁等。我只希望在何时执行网络请求谷歌允许)。
android - 是否可以完全禁用打盹模式和待机模式?
我需要创建一个应该 24/7 运行的应用程序。我不关心电池消耗,因为应用程序不会提交到 PlayStore 并且它只适用于选定的用户。我也理解应用程序只会持续一天,这在我的情况下是可以接受的。
应用程序功能主要依赖于网络和蓝牙功能,并且大部分代码都是用 pre marshmallow 编写的,并且更改整个实现现在对我来说不是一个正确的选择。
那么有什么方法可以不受限制地创建应用程序吗?此外,正如观察到的,一些设备制造商增加了额外的电池优化层,使情况变得更糟。
我试图创建一个带有部分唤醒锁的虚拟前台服务,但这似乎不起作用。甚至将应用程序列入白名单也不能解决问题。
谷歌没有关于打瞌睡/待机会影响哪些功能的适当文档。根据谷歌文档,后台任务不会被暂停,它只会推迟到下一个维护窗口。如果是这种情况,App 应该能够打印在打盹期间错过的所有应用程序。但正如观察到的那样,应用程序只会在维护窗口期间打印日志。这将打破预期的行为。
白名单是一个不错的选择,但应用程序仍会受到打盹模式的影响。即使用户明确选择不限制应用程序行为的原因是什么?当应用程序在不同的设备操作系统、制造商等中表现不同时,这非常令人沮丧。
对不起这个故事。我想了解有没有办法在不改变现有实现的情况下完全禁用打盹和待机模式?我浏览了各种文件,但没有办法达到这个 100%。请分享你的想法