我正在制作一个简单的应用,它可以在特定时间将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
。
感谢您的帮助!