首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么RTC_WAKEUP不能工作?

为什么RTC_WAKEUP不能工作?
EN

Stack Overflow用户
提问于 2012-12-07 03:40:16
回答 1查看 1.4K关注 0票数 1
代码语言:javascript
复制
public void runSound(){

    Intent it = new Intent(Values.TAG_EXECUTE_ALARM);
    PendingIntent pendIntent = PendingIntent.getBroadcast(this, 0, it, 0);

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND,0);

    AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
    long time = calendar.getTimeInMillis();
    alarm.set(AlarmManager.RTC_WAKEUP,time,pendIntent);
}

此方法是从服务中调用的。我的服务应该播放一个声音来通知用户,即使设备处于睡眠模式。

代码语言:javascript
复制
public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context arg0, Intent arg1) {
    MediaPlayer player = MediaPlayer.create(arg0, R.raw.order_alarm);
    player.setAudioStreamType(AudioManager.STREAM_ALARM);

    player.start();

}

这是实际播放声音的类。不幸的是,设备不会唤醒,声音也不会播放。当在设备进入休眠模式之前调用runSound时,声音可以完美地工作。有什么想法吗?

编辑:

->删除了静态引用(是的,它们是哑巴,因为runSound在服务内部)。

->是,标签值在接收方意图-过滤器中定义

->改进了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-12-07 03:50:40

好吧,我现在不能测试,但是看看你的代码,我可以看到一些问题。

在getBroadcast()中,最后一个参数必须是一个标志,比如"FLAG_CANCEL_CURRENT",我不确定0是否是一个有效的标志。

在"long time = calendar.getTimeInMillis();“中,看起来你正在把一个时间放在过去,如果是在过去,它将不会运行,尝试添加5000 (5s)。

在我看来,其他的一切都很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13751219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档