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在服务中)。
- >是的,标签值在接收器intent-filter
中定义- >改进了问题。
答案 0 :(得分:0)
好吧,我现在无法测试,但看看你的代码,我可以看到一些问题。
在getBroadcast()中,最后一个参数必须是一个标志,如“FLAG_CANCEL_CURRENT”,我不确定0是否是有效标志。
并且在“很长时间= calendar.getTimeInMillis();”它看起来像你过去的时间,如果它是在过去,它将无法运行,尝试添加5000(5s)。
所有其他事情对我来说都很好。