当前位置:   article > 正文

解决Android中使用webview加载音视频返回后还有声音问题_android 用webview观看直播视频无法调节声音大小

android 用webview观看直播视频无法调节声音大小

问题:在开发中我们使用webview加载网页播放音视频后,当我们返回到上一页后继续播放


原因:在加载网页播放音频时,html5的audio/video 标签将获取系统播放音频的焦点(类似将系统音频管理的权限给了标签使用),返回后焦点未被改变,网页任将获取音频的使用权限,导致音视频可能继续在后台播放。


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


下面我们看一下具体实现


1.获取音频管理器

  1. private AudioManager mAudioManager;
  2. private boolean isPause=false;

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


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

 

  1. @Override
  2. protected void onRestart() {
  3. super.onRestart();
  4. //重新加载
  5. mWebview.reload();
  6. }
  7. @Override
  8. protected void onResume() {
  9. super.onResume();
  10. isPause=false;
  11. }
  12. @Override
  13. protected void onPause() {
  14. super.onPause();
  15. isPause=true;
  16. }
  17. @Override
  18. protected void onDestroy() {
  19. super.onDestroy();
  20. mWebview.destroy();
  21. mAudioManager.abandonAudioFocus(audioFocusChangeListener);
  22. }
  23. private AudioManager.OnAudioFocusChangeListener audioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
  24. @Override
  25. public void onAudioFocusChange(int focusChange) {
  26. HnLogUtils.e(TAG, "focusChange: " + focusChange);
  27. if (isPause && focusChange == AudioManager.AUDIOFOCUS_LOSS) {
  28. requestAudioFocus();
  29. }
  30. }
  31. };
  32. //音频控件获取焦点
  33. private void requestAudioFocus() {
  34. int result = mAudioManager.requestAudioFocus(audioFocusChangeListener,
  35. AudioManager.STREAM_MUSIC,
  36. AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
  37. if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
  38. HnLogUtils.e(TAG, "audio focus been granted");
  39. }
  40. }





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/175219
推荐阅读
相关标签
  

闽ICP备14008679号