gpt4 book ai didi

java - 如何使用闹钟唤醒设备?

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

我使用以下代码在 AlarmManager 中设置重复事件:

mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
PERIOD, getPendingIntent(time));

接收者代码:

public class NotificationsReceiver extends BroadcastReceiver {
public static final String NOTIFICATION_INFO="notification_info";

@Override
public void onReceive(Context context, Intent intent) {
playSound(context);
Intent i=new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}

private void playSound(Context context) {
Uri notification=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
RingtoneManager.getRingtone(context, notification).play();
}
}

有一些问题 - 我需要在事件发生时播放音乐,但如果我的设备处于 hibernate 状态,我听不到任何信号!但是当我唤醒设备时,我会听到音乐。我该如何解决?

最佳答案

当我必须这样做时,我创建了以下类:

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;
}
}

然后你可以调用WakeLocker.acquire(getApplicationContext());唤醒您的手机,但不要忘记调用 WakeLocker.release();当您的操作完成时。

此外,将以下权限添加到 list 中:<uses-permission android:name="android.permission.WAKE_LOCK" />

希望这对您有所帮助。

关于java - 如何使用闹钟唤醒设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15677179/

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