gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:34:05 25 4
gpt4 key购买 nike

我正在尝试编写闹钟代码(这是我的第一个应用程序)。我确信这很容易执行,但我被卡住了。我在 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/

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