android - 如何通过AlarmManager唤醒屏幕?

标签 android alarmmanager wakelock

我正在尝试编写闹钟代码(这是我的第一个应用程序)。我确信这很容易执行,但我被卡住了。我在 TimePickerDialog 中设置的准确时间调用 Activity 。我使用 getActivity(),所以我没有使用 BroadcastReceiver。不排除是我选错了,可惜,我只找到了一个。

当时间到了“MainActivity.class”打开,但如果屏幕被锁定,它发生,但屏幕保持关闭。我尝试使用 WAKE_LOCK,但我想我做错了,因为我在 POWER_MANAGER 行等中有错误。

private void setAlarm(Calendar targetCal){

    Intent intent = new Intent(this, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    ((AlarmManager) getSystemService(ALARM_SERVICE)).set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
  1. 如何让我的屏幕在准确的时间点亮?
  2. 如果可以使用BroadcastService getActivity,我该怎么做?

我刚开始学习编程,所以如果你能给我一些链接或一个广泛的答案,我将不胜感激。

最佳答案

首先在 list 中赋予权限

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

然后创建下面的类来唤醒你的手机;

public class WakeLocker {

 private static PowerManager.WakeLock wakeLock;

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

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

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

}

在您的 Alarm Reciever 类的开头添加此代码行(在 OnRecieve 方法内);

WakeLocker.acquire(context);

OnRecieve 方法末尾的代码行

WakeLocker.release();

此外,我认为最好为警报管理器调用 setExact() 方法而不是 set() 方法。因为 set() 方法在给定的分钟内触发。不完全是在一分钟开始。我更喜欢 setExact() 方法而不是 set() 方法。

关于android - 如何通过AlarmManager唤醒屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31439581/

相关文章:

android - "Broken OOP"或如何使用 NavigationDrawer 回调

android - AlarmManager 和 BroadcastReceiver 而不是 Service - 这样不好吗? (暂停)

android - 如何划分元素之间的空间?安卓

android - 在没有 NFC 手机的情况下创建 NFC "Tag"对象?

c# - Parcelable List<string>, List<int>

android - Android AlarmManager setRepeating 中的问题

Android 警报管理器不适用于 Flutter Project App

java - 从另一个线程以编程方式关闭 Android 手机中的屏幕

android - 唤醒锁、深度 sleep 和 gcm

Android 服务在 10 秒后关闭