问题标签 [android-powermanager]

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.

0 投票
1 回答
59 浏览

java - 我们应该在单独的线程中调用 PowerManger 的重启方法吗?

我需要以编程方式重启安卓设备,PowerManager 的reboot功能就派上用场了。

我的问题是:
应该reboot在单独的线程中调用还是可以在同一个线程中调用它?

0 投票
1 回答
368 浏览

android - 重新映射设备电源按钮以显示对话框

我想重新映射电源按钮以显示自定义系统对话框/警报对话框,而不是关闭和打开屏幕。我查看了 Button Remapper 应用程序,但没有看到任何方法可以做到这一点。我想在不制作自定义 ROM 的情况下做到这一点,但我不确定是否可行。

如何重新映射电源按钮事件以显示系统对话框/警报对话框?

0 投票
2 回答
4962 浏览

android - Android P Beta - AlarmManager 通知不起作用

我正在 Android P beta 版本 4 上测试我的应用程序。我的应用程序的targetSdkVersion 是 27

已观察到警报管理器通知未按预期工作。我正在使用下面的代码来设置通知 -

I tested the same logic on Android 8.0 but it's working fine. In Android 9.0, notifications are working but sometimes they did not work at all. Also, if they work they are not exact and takes too much time and this happens even if the application is in foreground.

The logic is, I've the repeating reminders which are set on specific time and those should repeat them-self on daily basis at the specified time. Also these are high priority reminders and should land at exact time so I'm using setExact and once the notification is received it's being display and new alarm for the next week of the same day is set.

我检查了 Android P API 文档,但找不到任何影响AlarmManager和 Notifications 工作的链接。我觉得唯一导致问题的是Android P 中的电源管理和优先级存储桶。但是,即使应用程序在前台,通知也无法正常工作。

我在这里缺少的任何东西。任何帮助深表感谢。

0 投票
1 回答
38 浏览

android - 按下电源按钮后 GPS 服务停止

我正在多台设备上启动 GPS 定位服务,该服务在 Android 版本 <= 7 的设备中正常工作,即使按下电源按钮并处于锁屏状态,但我尝试在带有 Android 8.0.0 的诺基亚 3 和按下电源按钮后服务停止,但一段时间后设备自行锁定时服务不会停止。当我按下电源按钮并解锁设备时,服务开始再次发送 GPS 数据。这是我的代码:

}

我尝试为我的应用程序禁用电池优化,但问题仍然存在

0 投票
2 回答
3527 浏览

android - 将 Android 应用排除在备用存储桶中

在 Android 9 中,电池优化得到了进一步推动,应用程序根据用户最近与应用程序的交互量被分类为备用存储桶(请参阅Android 文档)。系统会根据应用所在的桶来限制每个应用可用的设备资源。

即使用户不与之交互,如何将我的应用程序保留在“工作集”存储桶中?(我没有找到任何允许覆盖此电源管理功能的权限或类似权限。)

更具体地说,我PeriodicWorkRequest必须每 30 分钟运行一次,灵活性为 10 分钟。但是,如果我了解强加的电源限制表,如果我的应用程序被放入“稀有”存储桶,则此类工作请求可能会被推迟至 24 小时。(在后台,工作库使用作业调度程序。)

情景的更多细节

该应用程序对安全至关重要,不打算供公众使用,但仅对有限的一组用户有意义。但是,如果其他人使用此应用程序,则不会发生任何不好的事情,但该应用程序对他/她没有任何用途。

更准确地说,该应用程序连接到特定建筑物的中央火灾报警站。所有员工都被要求在他们的智能手机上安装该应用程序。如果该建筑物的中央火灾报警站检测到事件,它会向所有注册的智能手机发送推送通知(通过 FCM),并且应用程序会播放警报声。这意味着(希望)很长一段时间内什么都没有发生,并且用户无意以任何方式与应用程序交互。应用程序本身不提供任何交互,它仅说明当前状态(绿色“OK”标志或红色“ALERT”标志)并在后台等待其余时间。

由于应用程序对安全至关重要,因此必须检测应用程序失去与服务器的连接的故障情况。为此,服务器实际上是在后台周期性地发送消息,即一个序列idle, idle, idle, idle, alarm, alarm, alarm, alarm, idle, idle, idle, ... 通常情况下,每 5 分钟以低 FCM 优先级广播消息。如果状态发生变化,则会立即发送一条具有高 FCM 优先级的附加消息(cp.粗体字母)。

PeriodicWorkRequest该应用程序使用上述问题中提到的方法实现了看门狗。这个看门狗有双重作用:唤醒设备并让设备接收所有(低优先级)已被推迟的 FCM 消息,然后检查最新消息是否不超过 1.5*5 分钟。如果失败,应用程序会尝试向服务器重新注册,并等待状态消息再次开始进入。如果这也失败了,应用程序会向用户显示警告。

到目前为止一切正常。唯一的问题是新型电池优化会在某个时间点减慢看门狗的速度。当然,我可以发布一个常规规定,强制所有员工偶尔打开应用程序并简单地查看它,但这有点愚蠢。

我可以重新表述上面的问题:我完全理解为什么 Android 将电池优化推向了边缘。有很多(疯狂的)应用程序滥用周期性任务来达到本应以不同方式解决的目的。而且网络上仍然充满了“白痴”的编程建议,比如每 5 秒检查一次特定网页的修改。但是,如果电池优化越来越成为一个障碍,我怎么能写出需要看门狗来实现合法目的的安全关键应用程序。谷歌的“如果用户不使用你的应用程序,这对他/她显然不重要”的规则在这里不适用。

0 投票
2 回答
7740 浏览

android - 是否可以通过 android 电视应用程序关闭电视设备?

对于我的示例,我创建了简单的电视应用程序添加按钮“关机”并尝试关闭我运行它的模拟器。

首先,我试图在https://developer.android.com/training/tv/start/hardware#hardware-permissions的文档中找到一些东西,但没有硬件电源控制。

之后,我尝试了一些 android 移动选项,例如: programmatically set screen to off in android

如:WRITE_SETTINGS

我认为这里的问题是获得 android tv 无法解决的运行时权限。

我还尝试了Android 的选项:如何以编程方式打开和关闭屏幕?

没有效果。

用屏幕亮度进行操作也没有效果:

知道我可以尝试什么吗?谢谢你的帮助

0 投票
0 回答
192 浏览

android - 音乐播放器卡住部分唤醒锁(背景)

我有一个 android 音乐播放器,我在 Play Console 中看到“卡住部分唤醒锁(背景)”。我不知道如何解决它。我搜索我的代码,当我初始化播放器时,我发现的唯一代码如下。

0 投票
1 回答
170 浏览

android - 从新代码控制 AOSP 功率报告功能

在 Android 开源项目中,我将在哪里添加/覆盖告诉 Android 电池电量和交流电源的代码?

我需要轮询 i2c 总线上的组件以在我的板上获取此信息,然后将其传递给 Android。

0 投票
1 回答
1360 浏览

android - 如何以编程方式确定 Android 应用程序是否在三星 Galaxy 上进入睡眠状态?

三星 Galaxy 具有让应用程序进入睡眠状态的功能——据我了解,这与应用程序的电池优化不同。

我需要以编程方式检查应用程序是否配置为睡眠,以便我可以正确警告用户这一点以及后台任务无法运行的事实。

我知道PowerManager.isIgnoringBatteryOptimizations()这似乎与是否让应用程序进入睡眠状态无关。

0 投票
1 回答
1788 浏览

android - 如何防止应用程序在后台被杀死?

在我的华为 P20 Lite (Android 9) 上,有一个设置Power usage details -> app launch -> "Manage automatically"。启用此设置后,我注意到操作系统有时会在我的应用程序处于后台时杀死它。

在此处输入图像描述

该应用程序充当流媒体服务器。

是否可以以编程方式禁用“自动管理”并启用“后台运行”设置?

编辑:我注意到著名的应用程序,如 Deezer 或 Spotify 不会要求忽略电池优化,并且在后台播放音乐时它们永远不会被杀死。有谁知道他们是如何做到的?