Android怎样才能完全静音流语音通话?

时间:2014-11-28 12:52:23

标签: android stream call voice mute

正如标题所示,我希望在连接呼叫之前将声音静音。我通过以下代码设置流:

mAudioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true);

并尝试代码:

mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, 0, 0);

它可以使声音最低,但不是沉默。还有一个小声音。如果我这次播放另一首音乐,他们会混在一起。我不想要这种适应。

有人有任何想法可以避免这个问题吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

给你:

val audioManager = getSystemService(AudioManager::class.java)
audioManager.mode = AudioManager.MODE_IN_CALL
audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
        AudioManager.FLAG_SHOW_UI, 0)
audioManager.adjustStreamVolume(AudioManager.STREAM_VOICE_CALL,
        AudioManager.ADJUST_TOGGLE_MUTE, 0)
audioManager.adjustVolume(AudioManager.ADJUST_MUTE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)

答案 1 :(得分:0)

我认为我的mp3播放器中的代码应该可以帮助您解决问题。

phoneStateListener = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String incomingNumber) {
                // String stateString = "N/A";

                Log.v(TAG, "Starting CallStateChange");
                switch (state) {

                case TelephonyManager.CALL_STATE_OFFHOOK:

                case TelephonyManager.CALL_STATE_RINGING:
                    if (mp != null) {
                        mp.pause();;        
                        isPausedInCall = true;

                    }

                    break;

                case TelephonyManager.CALL_STATE_IDLE:
                    // Phone idle. Start playing.

                    if (mp != null) {
                        if (isPausedInCall) {
                            isPausedInCall = false;
                            initNotification();
                            mp.start();
                        }

                    }

                    break;
                }

            }
        };

        // Register the listener with the telephony manager
        telephonyManager.listen(phoneStateListener,
                PhoneStateListener.LISTEN_CALL_STATE);