java - Android 中的唤醒锁无法打开屏幕

标签 java android eclipse oop wakelock

我有一个等待摇动的前台服务。当它收到该 Action 时,它会发出一个广播:

Intent i = new Intent("com.company.app.shakeDetectedMessage");
sendBroadcast(i);

我的主要 Activity 通过实现该方法的广播接收器接收此信息:

@Override
    public void onReceive(Context context, Intent intent)
    {
        MainActivity.this.turnOnScreen();
        Toast.makeText(getApplicationContext(), "Screen ON", Toast.LENGTH_SHORT).show();
    }

还有我的点亮方法:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

我有部分唤醒锁

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
    PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SensorRead");
    mWakeLock.acquire();

在服务中声明

然而,当我关闭屏幕并摇晃时,屏幕并没有打开!我验证了每种方法都在使用日志。即使屏幕关闭,onReceive 也能正常工作。广播正在工作。只是屏幕打不开!

最佳答案

调用WakeLocker类的acquire方法

类:

public abstract class WakeLocker {
    private static PowerManager.WakeLock wakeLock;

    public static void acquire(Context context) {
        if (wakeLock != null) wakeLock.release();

        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
        PowerManager.ACQUIRE_CAUSES_WAKEUP |
        PowerManager.ON_AFTER_RELEASE, "WakeLock");
        wakeLock.acquire();
    }

    public static void release() {
        if (wakeLock != null) wakeLock.release(); wakeLock = null;
    }
}

需要权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />   

关于java - Android 中的唤醒锁无法打开屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27284794/

相关文章:

java - 如何使用 JSch ssh 到 ZXA10 C320 设备

java - 在 gwtSuperDev 任务中包含用于重新编译的其他源

eclipse - 使用 "Eclipse product export"生成的存储库目录

eclipse - 无法在从 Git 导入的 Eclipse 中运行项目

java - 在查询参数中获取 "%"值的 charconversion 异常?

java - 如何比较两个图像边缘描述符?

java - 高级别休息客户端仅获得点击的大小

java - 如果文件扩展名不在 url 的末尾,如何确定文件扩展名

android - 无法解析符号 'editText'

android - Netbeans、android-maven-plugin 和使用 apklib/aar 依赖项