WebView中音视频自动播放与退出时停止播放

背景:

项目需求是进入页面自动播放音频或者视频(非本地资源),页面关闭时音频或视频关闭。现在实现情况是:自动播放功能在有些手机上可以自动播放并有声音,有的手机上也播放但没有声音,当用户点击或者产生触发条件下才会有声音;退出关闭当前Activity,音频或视频并没有关闭,还在播放。

解决方法:

1、Activity退出时关闭音频或视频

重写Activity的onDestroy()方法,在方法里添加webView.destroy()方法。

@Override
protected void onDestroy() {
    super.onDestroy();
    //为了使WebView退出时音频或视频关闭
    webView.destroy();
}

2、音频或视频自动播放

写一个自动播放的方法,分别在Activity的onCreate()方法、WebViewClient的onPageFinished()中执行该方法。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview_activity);
    ......
    autoPlay();
}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
       ......
    }

    @Override
    public void onPageFinished(WebView view, String url) {
       ......
        autoPlay();
    ......
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        ......
    }
}

/**
 * 使视频或音频自动播放,默认播放第一条
 */
public void autoPlay() {
    //音频自动播放js方法
    String audioJs = "javascript: var v = document.getElementsByTagName(‘audio‘); v[0].play();";
    webView.loadUrl(audioJs);
    //视频自动播放js方法
    String videoJs = "javascript: var v = document.getElementsByTagName(‘video‘); v[0].play();";
    webView.loadUrl(videoJs);
}

不足:

如果WebView中既有音频也有视频的话,会导致它们同时播放;如果音频播放过程中要播放视频,音频要暂停,视频播放完音频要接着播放;还有一些更加复杂的场景这个并没有实现。

以上仅是个人见解,有问题请大家多多指教。

时间: 2024-12-12 11:34:56

WebView中音视频自动播放与退出时停止播放的相关文章

手机影音第九天,控制视频全屏播放与退出全屏播放,音量调节按钮来控制视频音量与静音的实现

代码以托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 一.视频全屏播放与退出全屏 系统默认的videoview类,没有调整大小的方法,因此需要自定义一个类,继承videoview,然后重写里面的三个构造方法,再自定义一个调整视频播放页面大小的方法. 1.布局文件 同时,在视频播放的布局文件中,videoview布局要引用上面自定义的类. <?xml version="1.0" encoding=&

iOS WKWebView 退出后停止播放音频/视频

1.注入使网页停止音频.视频播放的JS代码(Swift 4): 1 let pauseJSString:String = 2 """ 3 var videos = document.getElementsByTagName("video"); 4 function pauseVideo(){ 5 var len = videos.length 6 for(var i=0;i<len;i++){ 7 videos[i].pause(); 8 } 9 }

解决手机微信浏览器视频自动播放和默认全屏问题

1.早期因为带宽和流量的因素,移动端浏览器禁止视频自动播放,现在现在流量便宜了.手机硬件越来越好了,部分可支持了2.在移动端浏览器, video 在用户点击播放或者通过API video.play() 触发播放时,会强制以全屏置顶的形式进行播放,设计的初衷可能是因为全屏能提供更好的用户体验 <video controls="controls" src="" id="ckplayer_a1" x5-video-player-type=&quo

视频自动播放的几种方法

在网页上添加视频往往不能自动播放,如何实现视频的自动播放这是许多朋友想解决的问题.经过收集和研究,找到几种视频实现自动播放的方法,供大家参考.学习.使用! 视频添加到网页中的通用代码: <EMBED src=视频的SWF地址 width=500 height=400  wmode="transparent" invokeURLs="false" quality="high" allowScriptAccess="never&quo

获取视频停止播放时已经播放的时间

获取停止,暂停时视频已经播放的时间主要靠注册通知,当暂停或停止时响应通知时间,获取当前已经播放的时间,同时也可以在视频开始播放时给一个播放时间,从当前播放时间播放视频,用此方法来达到播放视频从上次播放时间开始播放 主要代码 MPMoviePlayerViewController *mPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL URLWithString:self.itemVideoUrl]]; [

swiper中有视频时,滑动停止后视频停止播放

我们经常能够看到在图片轮播中,穿插着视频的播放,如下图为淘宝的一个产品轮播图,放个视频能够让顾客对产品有个更全面的认识. 我们可以用swiper实现这个功能.用法就跟放图片一样,只是这里把图片换成视频就可以了. 只是如果放的是视频的话,就有一个问题,就是我们怎么在滑动结束的时候,自动停止播放上一个视频呢? 我们可以利用 swiper 提供的 onSlideChangeEnd 方法来做到这种效果,具体代码如下: $(".swiper-container").each(function (

chrome如何设置视频自动播放

在网页中我们往往要一段小视频自动播放,但谷歌浏览器把自动播放功能给禁用了,解决方法就是给video标签增加一个muted属性: <video muted="muted" loop="loop" autoplay> <source src="video.mp4" type="video/mp4" /> </video> 原文地址:https://www.cnblogs.com/arduka/p

如何禁止 iPhone Safari video标签视频自动全屏?

最近做一个移动端微信页面项目,在微信页面中有视频播放,但是需要禁止IOS的自动全屏播放(前提必须使用video标签).如: <video id="post" autoplay loop preload="auto"> <source src="foo.mp4" type="video/mp4"> </video> 在iPhone safari 点击视频会弹出播放器进行全屏播放. 在网上看了看

搭建rtmp直播流服务之4:videoJS/ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)

前面几章讲解了使用nginx-rtmp搭建直播流媒体服务器,以及使用ffmpeg推流到nginx-rtmp服务器,java通过命令行调用ffmpeg实现推流服务,后端的事情到这里就已经全部完成了. 本章讲一下播放器的选用和二次开发,前端的播放器虽然有flex(flash)可以用,但是很遗憾flex接触的并不多,学习成本又太高,那么基于第三方开源的flash播放器二次开发就显得很有必要. 一.几种播放器选择 那么播放器,哪些已经不再更新的和收费的,这里不会介绍,只介绍两种轻量级的开源播放器. 1.