java - 即使在 Android 屏幕进入休眠模式后仍继续振动

标签 java android android-service

在我的应用程序中,我通过以下代码启动 VIBRATOR_SERVICE

long[] pattern = {50,100,1000}
Vibrator vibe=(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(pattern, 0);

我希望振动持续到我打电话为止

vibe.cancel();

代码运行良好,但当屏幕进入休眠模式时振动消失。

我希望即使在屏幕进入休眠模式后振动仍会继续。有什么办法可以做到这一点?请帮助我。

提前致谢。 :)

最佳答案

问题的正确答案如下

在执行此操作之前,不要忘记将权限“android.permission.VIBRATE”添加到您的应用程序 list 文件中。

public BroadcastReceiver vibrateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            vibe.vibrate(pattern, 0);
        }
    }
};

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
registerReceiver(vibrateReceiver, filter);

wakelock 在这里不起作用,因为接收器只有在屏幕熄灭后才会收到 Intent 。虽然我们可以在屏幕进入关闭模式后获得唤醒锁,但振动停止,因为它发生在 ACTION_SCREEN_OFF 时。所以可以在收到广播后重新开始振动来完成。

关于java - 即使在 Android 屏幕进入休眠模式后仍继续振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561551/

相关文章:

java - 在 Java 中合并和删除多个列表中的重复项的最佳方法

java - 在 Java Request Sampler 中获取和设置 JMeter 的属性

java - 具有相同依赖关系的 Dagger 2 多个组件

java - Android 用户点击我的通知并返回到我的应用

android - 多个 IntentServices 并行运行

java - 没有 Runnable 方法和 Test 类应该只有一个公共(public)零参数构造函数

java - 使用 Maven 运行远程命令

android - Android 中 HttpUrlConnection 的编码问题

android - 有没有办法在双卡手机的两个插槽中获取运营商名称?

java - 在同步块(synchronized block)内使用 wait()