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);
}此方法是从服务中调用的。我的服务应该播放一个声音来通知用户,即使设备处于睡眠模式。
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在服务内部)。
->是,标签值在接收方意图-过滤器中定义
->改进了这个问题。
发布于 2012-12-07 03:50:40
好吧,我现在不能测试,但是看看你的代码,我可以看到一些问题。
在getBroadcast()中,最后一个参数必须是一个标志,比如"FLAG_CANCEL_CURRENT",我不确定0是否是一个有效的标志。
在"long time = calendar.getTimeInMillis();“中,看起来你正在把一个时间放在过去,如果是在过去,它将不会运行,尝试添加5000 (5s)。
在我看来,其他的一切都很好。
https://stackoverflow.com/questions/13751219
复制相似问题