如何正确地从服务中唤醒屏幕



我有IntentService,我在哪里创建通知。我希望在创建通知后打开屏幕。既然PowerManager.WakeLock screenOn = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.FULL_WAKE_LOCK, "example");贬值了,我怎么能做对呢?

我的问题和你的问题一样,但下面的代码对我来说是正确的。。

在包中创建一个类WakeLocal.java

import android.content.Context;
import android.os.PowerManager;
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;
    }
}

并调用活动中private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()中的代码

然后调用释放锁定方法

// Releasing wake lock
WakeLocker.release();

别忘了在你的menifest.xml 中添加权限

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

这个代码信用完全属于http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

最新更新