如何在来电时静音手机铃声

3

如何通过编程方式静音Android手机的来电铃声?(就像按电源按钮一样)

我知道setStreamMuteadjustStreamVolume,但我认为有更好的方法。


1
可能是Android拒绝接收来电的重复问题 - Ahmad Aghazadeh
请查看此链接:https://dev59.com/fGUp5IYBdhLWcg3w1qIi - Ahmad Aghazadeh
1
您是指将铃声静音,但保持手机静默振动吗? - Stefan
@AhmadAghazadeh 这不是重复的,我不想拒绝一个电话。 - Maxim Shirokov
@Stefan,是的,我是这个意思。 - Maxim Shirokov
我认为你可以在这里找到一些信息:http://stackoverflow.com/questions/28801646/android-studio-mute-unmute-phone-help。那里似乎有一个`setRingerMode`,也许它能帮到你。 - Stefan
1个回答

4

setStreamMute() 在 Build 版本23及之后的版本(marshmallow)中已被弃用。您可以在 marshmallow 及以上版本中使用 adjustStreamVolume()

public void adjustAudio(boolean setMute) {
    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int adJustMute;
        if (setMute) {
            adJustMute = AudioManager.ADJUST_MUTE;
        } else {
            adJustMute = AudioManager.ADJUST_UNMUTE;
        }
        audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, adJustMute, 0);
        audioManager.adjustStreamVolume(AudioManager.STREAM_ALARM, adJustMute, 0);
        audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, adJustMute, 0);
        audioManager.adjustStreamVolume(AudioManager.STREAM_RING, adJustMute, 0);
        audioManager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, adJustMute, 0);
    } else {
        audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, setMute);
        audioManager.setStreamMute(AudioManager.STREAM_ALARM, setMute);
        audioManager.setStreamMute(AudioManager.STREAM_MUSIC, setMute);
        audioManager.setStreamMute(AudioManager.STREAM_RING, setMute);
        audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, setMute);
    }
}

您可以像这样调用此方法:

adjustAudio(true) // To mute all the system, ringer, alarm, music, notification sounds on any event like button click.

adjustAudio(false) // To unmute all the system, ringer, alarm, music, notification sounds on any event like button click.

非常好,谢谢 :) - Anshul Aggarwal
嗨,我有一个问题。如何将我的通话静音?我尝试了AudioManager.STREAM_VOICE_CALL,但它没有起作用。请帮助我解决这个问题。提前致谢。 - Shanthini M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接