关于静音的设置与恢复 AndroidAudioManager.setStreamMute

本文探讨了AndroidAudioManager的静音设置与恢复,指出静音请求可以叠加,但需要相同数量的非静音请求才能取消静音。通过示例展示了如何正确使用setStreamMute方法,强调在设置静音状态前需要检查当前系统静音状态以避免冗余操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    /**
     * Mute or unmute an audio stream.
     * <p>
     * The mute command is protected against client process death: if a process
     * with an active mute request on a stream dies, this stream will be unmuted
     * automatically.
     * <p>
     * The mute requests for a given stream are cumulative: the AudioManager
     * can receive several mute requests from one or more clients and the stream
     * will be unmuted only when the same number of unmute requests are received.
     * <p>

     * For a better user experience, applications MUST unmute a muted stream
     * in onPause() and mute is again in onResume() if appropriate.
     * <p>
     * This method should only be used by applications that replace the platform-wide
     * management of audio settings or the main telephony application.
     *
     * @param streamType The stream to be muted/unmuted.
     * @param state The required mute state: true for mute ON, false for mute OFF

     */


      红色部分的意思是:静音请求是可以叠加的,AudioManager 可以接收多个静音请求;

但是只有接收到同等数量的非静音请求后才会实现非静音功能;


      例:

       AndroidAudioManager    androidAudioManager = (android.media.AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);

       androidAudioManager.setStreamMute(android.media.AudioManager.STREAM_MUSIC, true);

       androidAudioManager.setStreamMute(android.media.AudioManager.STREAM_MUSIC, true);

       

       androidAudioManager.getStreamVolume(android.media.AudioManager.STREAM_MUSIC);

       此时获取到的音量值是0 ;


        androidAudioManager.setStreamMute(android.media.AudioManager.STREAM_MUSIC, false);

        此时获取到的音量值是0 ;

   

       androidAudioManager.setStreamMute(android.media.AudioManager.STREAM_MUSIC, false);

         此时获取到的音量值是设置静音前的音量值 ;


正确的使用方法:设置静音状态之前要判断当前的系统静音状态,如果是要的target 状态就不要重复设置了。

   






       


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值