AlarmManager.RTC_WAKEUP 在关闭时无法唤醒我的 Android 设备

问题描述 投票:0回答:2

我使用下面的代码在我的 Android 应用程序中安排闹钟。

/**
     * To set the alarm service to be fire on OFF mode
     */
    public void setOffModeAlarmService() {
        int offModeStartHour = 8;
        int offModeStartMinute = 30;

        Calendar offModeTime = Calendar.getInstance();
        offModeTime.setTimeZone(TimeZone.getTimeZone(Constants.TIME_ZONE));
        offModeTime.set(Calendar.HOUR_OF_DAY, offModeStartHour);
        offModeTime.set(Calendar.MINUTE, offModeStartMinute);

        mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                offModeTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
                getOffModeAlarmPendingIntent());
        mAppUtilInstance.logDebugMessage(TAG, "OFF Mode Alarm Scheduled.");
    }

我每天都定了闹钟。但是,如果在闹钟时间之前关闭我的手机,那么我的手机不会在预定时间唤醒。

即使我尝试使用WakefulBroadcastReceiver,也获得了WakeLock。但没有任何帮助。

请帮我解决这个问题。

android broadcastreceiver alarmmanager android-pendingintent power-off
2个回答
2
投票

不,如果手机关机,它就不能做任何事情。如果它处于睡眠模式,屏幕关闭且未使用,则闹钟仍将像其他类型的通知一样发挥作用。

在旧手机(如诺基亚)上,当手机关闭时闹钟仍然会响。这在 Android 中是令人失望的


0
投票

RTC_WAKEUP 在模拟器中关闭屏幕时播放铃声,但是当我在真实设备中运行 apk 文件时,它不会在屏幕关闭时播放铃声。当我解锁设备时,它会被触发并开始播放铃声。我想知道为什么它会发生在真实设备中。

package com.example.database;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;

public class MyReceiver extends BroadcastReceiver  {
    MediaPlayer mMediaPlayer;


    @Override
    public void onReceive(Context context, Intent intent) {
        mMediaPlayer = new MediaPlayer();

        String label=intent.getStringExtra("KEY");

        Uri mediaPath = Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.myringtone);
        final MediaPlayer ringtone = MediaPlayer.create(context, mediaPath);
        mMediaPlayer.setLooping(true);
        ringtone.start();

    }

}
© www.soinside.com 2019 - 2024. All rights reserved.