在broadcastReceiver中使用OnReceive的setStreamMute

时间:2013-09-17 05:02:16

标签: android alarmmanager android-notifications android-audiomanager

我正在制作一个简单的应用,它可以在特定时间将STREAM_NOTIFICATION静音,并在特定的运行时间后取消静音。

我使用AlarmManager触发操作,并在setStreamMute(STREAM_NOTIFICATION, true/false)的{​​{1}}中执行onReceived。报警集的核心代码如下:

BroadcastReceiver

以下是静音代码以及在onReceive函数中执行的操作

// mute task
Calendar muteCal = getTaskCalendar(i, curTask.getHour(), curTask.getMin(), 0);
PendingIntent mutePendingIntent = getBoardCastPendingIntent(ctxt, "tag", "Mute", muteRequestCodeBase);

// unmute task
Calendar unMuteCal = getTaskCalendar(i, curTask.getHour(), curTask.getMin(), curTask.getPeriod());
PendingIntent unmutePendingIntent = getBoardCastPendingIntent(ctxt, "tag", "UnMute", unmuteRequestCodeBase);

alarm.setRepeating(AlarmManager.RTC_WAKEUP, muteCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, mutePendingIntent);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, unMuteCal.getTimeInMillis(), AlarmManager.INTERVAL_DAY * 7, unmutePendingIntent);

当到达静音时间时,noReceive setToMute,并且当新短信到达时将没有声音通知,一切都很好。

但是,在特定时间之后,public void onReceive(Context ctxt, Intent intent) { MuterHelper.setToMute(ctxt); } public class MuterHelper { public static void setToMute(Context context) { AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); am.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); } 将根据API文档自动取消静音(静音命令受到客户端进程死亡保护:如果流上有活动静音请求的进程死亡,则此流将自动取消静音),我检查了系统日志,有一个日志说

STREAM_NOTIFICATION

好的,这是我的问题。我想知道如何让服务客户端保持活动状态并保持"00:53:33.250 W/AudioService( 312): Volume service client died for stream: 5" 取消静音,直到另一个非静音任务NOTIFICATION

感谢您的帮助!

0 个答案:

没有答案