我正在开发一个垃圾邮件过滤应用程序,而我正试图让Ringer为传入(垃圾邮件)呼叫静音。问题不在于AudioManager.setStreamMute,也没有AudioManager.setRingerMode在Lollipop中工作。这是我的代码片段:
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
if (stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamMute(AudioManager.STREAM_RING, false);
Log.i(TAG, "unmute");
} else if (stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamMute(AudioManager.STREAM_RING, true);
Log.i(TAG, "mute");
}
}
当有来电时,静音部分总是被执行但有时会成功,有时无法使铃声静音。我找不到任何规则。并且audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)
也不起作用。在仿真器上进行测试时,这似乎工作正常。 5,所以我猜它有点与Lollipop有关,没有静音模式,但有中断过滤。商业垃圾邮件过滤器正在维持良好状态,所以有人可以告诉我如何用Lollipop静音来电吗?
答案 0 :(得分:1)
我在Android 5中遇到了同样的问题。带有false to unmute值的AudioManager.setStreamMute永远不会正常工作。
我尝试了AudioManager.setStreamSolo,它对我有用。
//to mute ringtone
Global.app().getAudioManager().setStreamSolo(AudioManager.STREAM_MUSIC, true);
//unmute ringtone
Global.app().getAudioManager().setStreamSolo(AudioManager.STREAM_MUSIC, false);
除了你想要播放的所有其他视频流外,它会静音。在可能的情况下,我需要播放自己的音频而不是铃声。
但如果你需要绝对的沉默,你可以尝试播放沉默的音频来破解。