安卓加载webView视频页面,退出后还有声音

做项目的时候遇到一个问题,就是安卓用webView加载视频的页面,销毁当前页面后,还是能听到视频播放的声音,以此来记录解决问题的方案。

尝试过在onDestroy()方法中,调用webView.destroy()方法,销毁它,但是没效果。

参考了另外方法解决的,首先说一下产生这样现象的原因是:在加载网页播放音频时,html5的audio/video 标签将获取系统播放音频的焦点(类似将系统音频管理的权限给了标签使用),返回后焦点未被改变,网页任将获取音频的使用权限,导致音视频可能继续在后台播放。

解决方案:在界面被销毁时,让网页的标签失去焦点,失去对音频的使用权限。

直接上代码。

1.获取音频管理器

  private AudioManager  mAudioManager;
  private boolean isPause=false;

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

 2.在destory()中让标签失去焦点,让应用自身获取焦点。

@Override
protected void onRestart() {
    super.onRestart();
    //重新加载
    sportStartWeb.reload();
}
 
@Override
protected void onResume() {
    super.onResume();
    isPause=false;
}
 
@Override
protected void onPause() {
    super.onPause();
    isPause=true;
}
 
@Override
protected void onDestroy() {
    super.onDestroy();
    sportStartWeb.destroy();
    mAudioManager.abandonAudioFocus(audioFocusChangeListener);
}
 
private AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
    @Override
    public void onAudioFocusChange(int focusChange) {
        if (isPause && focusChange == AudioManager.AUDIOFOCUS_LOSS) {
            requestAudioFocus();
        }
    }
};
 
//音频控件获取焦点
 
private void requestAudioFocus() {
    int result = mAudioManager.requestAudioFocus(audioFocusChangeListener,
            AudioManager.STREAM_MUSIC,
            AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
    if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
            Log.e(TAG, "audio focus been granted");
    }
}

音频方面的知识,可以参考:https://blog.csdn.net/codemydream/article/details/53434891

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值