gpt4 book ai didi

java - 屏幕关闭/锁定后手机振动停止工作

转载 作者:行者123 更新时间:2023-12-04 12:44:36 26 4
gpt4 key购买 nike

我有一项服务可以检查我网站上的更新,我希望它能够在找到更新时引起振动,即使屏幕关闭或锁定也是如此。

目前仅当屏幕未关闭/锁定时振动才有效。
即使屏幕关闭/锁定,所有其他功能也能正常工作。

Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = new long[]{0, 400, 200, 400};
if (Build.VERSION.SDK_INT >= 26) { // New API
vibrator.vibrate(VibrationEffect.createWaveform(pattern,0));
} else { // Old API
vibrator.vibrate(pattern, 0);
}

即使手机屏幕关闭,如何振动手机?
我尝试使用 WakeLock但这似乎不是问题?

我设置了所有权限,因为它在屏幕打开时工作。

最佳答案

鉴于这种:

I have a service that checks for updates on my website and I would like it to be able to cause a vibration when a update is found even if the screen is off or locked.



和这个:

How can I vibrate a phone even if its screen is off? I've tried to use a WakeLock but that doesn't seem to be the problem?



我得出的结论是,当您的应用程序在前台时,您的服务可以正常工作,但在后台时不会出现问题。因此,您的目标 Android API 很可能是 26和更高。

在这种情况下,由于操作系统施加的背景限制,您的更新服务会在一段时间后停止工作。由于更新服务不再运行,显然它无法启动任何振动。

API 的后台执行限制 >= 26

从 Android 8.0 开始,对在后台运行的应用程序有限制。因此,您的服务将工作一段时间,然后将被系统杀死,如文档中所述(请阅读更多 here ):

When an app goes into the background, it has a window of several minutes in which it is still allowed to create and use services. At the end of that window, the app is considered to be idle. At this time, the system stops the app's background services, just as if the app had called the services' Service.stopSelf() methods.



因此,如果您希望您的服务在应用程序处于后台时继续运行,您仍然可以选择。其中一些如下

工作经理

The WorkManager API makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or device restarts.



WorkManager 替换您的服务,它会定期运行以查询您的服务器。

作业调度器

好吧,如果您使用 WorkManager,则实际上并不需要它。 .它将被 WorkManager 使用如果您的设备 API 是 23,则在内部然后。

前台服务

将您的服务转换为前台服务,以便在执行期间将应用程序视为前台。但在这种情况下,它必须在您执行更新检查的整个过程中都处于 Activity 状态,所以它可能不是最好的解决方案。请阅读更多 here .

结论

请记住,后台服务应替换为 WorkManagerForeground Service从 API 26 开始.否则,它们可能无法按预期执行,因为系统会在一定时间后杀死它们。

关于java - 屏幕关闭/锁定后手机振动停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58790318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com