android WebView音频关闭的问题

Posted xqash

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android WebView音频关闭的问题相关的知识,希望对你有一定的参考价值。

关于WebView加载的的网页中加载一些音频文件,退出的时候无法关闭的问题,网上一堆的解决方案,但是都没有解决我的问题。我们的界面是一个很特殊的情况,在onDestory的时候,不能立刻关闭WebView( myWebView.destroy();myWebView = null;)

后期各种尝试,都没法关闭,最后想到了用系统的音频管理来处理这个问题,没想到还真的可以,下面直接放代码:

if (audioManager == null) {
                audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            }
            /**系统音频控制权限,AUDIOFOCUS_GAIN_TRANSIENT 短暂获取**/
            int result = audioManager.requestAudioFocus(
                    adfocusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
            /**AUDIOFOCUS_REQUEST_GRANTED 标识拿到控制,然后再将监听释放**/
            if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
                if (audioManager != null) {
                    audioManager.abandonAudioFocus(adfocusChangeListener);
                }
            }

  

    /**
     * 获取音频焦点
     **/
    private AudioManager.OnAudioFocusChangeListener adfocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
        public void onAudioFocusChange(int focusChange) {
        }
    };

  

onAudioFocusChange()方法的focusChange参数指示了该AudioFocus的竞争者对AudioFocus的拥有情况,取值如下:

 

  •  AUDIOFOCUS_GAIN:获得了Audio Focus;
  •  AUDIOFOCUS_LOSS:失去了Audio Focus,并将会持续很长的时间。这里因为可能会停掉很长时间,所以不仅仅要停止Audio的播放,最好直接释放掉Media资源。而因为停止播放Audio的时间会很长,如果程序因为这个原因而失去AudioFocus,最好不要让它再次自动获得AudioFocus而继续播放,不然突然冒出来的声音会让用户感觉莫名其妙,感受很不好。这里直接放弃AudioFocus,当然也不用再侦听远程播放控制【如下面代码的处理】。要再次播放,除非用户再在界面上点击开始播放,才重新初始化Media,进行播放。
  •  AUDIOFOCUS_LOSS_TRANSIENT:暂时失去Audio Focus,并会很快再次获得。必须停止Audio的播放,但是因为可能会很快再次获得AudioFocus,这里可以不释放Media资源;
  •  AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:暂时失去AudioFocus,但是可以继续播放,不过要在降低音量。

以上是关于android WebView音频关闭的问题的主要内容,如果未能解决你的问题,请参考以下文章

android中解决关闭的webView时候音视频还在播放问题

android WebView 通过听筒或蓝牙播放音频

Android 高性能音频Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 设置 Oboe 音频设备 ID | setDeviceId 函数原型 | AudioStream 音频流 )(代码片

在 html iframe 内的 Android webview 上播放音频时出错

如何在android的webview上播放音频?

Phonegap Android Webview Video 只播放音频