سؤال

I want to realize the mute effect under the condition of mobile phone without root.

private AudioManager myAudioManager = null;

        myAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

        int ringerMode  = myAudioManager.getRingerMode();       
        myAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

        myAudioManager.setRingerMode(ringerMode); 

I test the above method. It has the effect on some mobile. And other mobile has no effect. Why?

What other way to mute except this?

هل كانت مفيدة؟

المحلول

There may be version sdk issue. By the way there are several streams in Android, which one do you want to mute? Try this code:

    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0); // mute music stream
    audioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0); // mute ring stream
    if (Build.VERSION.SDK_INT >= 8) {
        audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
        audioManager.requestAudioFocus(null, AudioManager.STREAM_RING, AudioManager.AUDIOFOCUS_GAIN);
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top