小分队做项目的时候,视频用h5来播放。第一个反应是webview来实现,小分队也是行动派,马上用android 自带的webview。balabalabala...
跳坑了~。oppo android4.4.4能正常播放,在小米6.0的时候就出现各种各样的问题。
虽然webview可能没什么用,但是还是写出来,让大家熟悉一下,代码如下
xml:
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
java:
public class MainActivity extends Activity {
private WebView contentWebView = null;
private String url = "http://M00/00/22/wKgKG1hgqseADhUnAAyNW2v8zzY245.mp4";
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
contentWebView = (WebView) findViewById(R.id.webview);
// 启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
// 从assets目录下面的加载html
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(btnClickListener);
contentWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "video_h5");
contentWebView.loadUrl("file:///android_asset/video_h5.html");
}
View.OnClickListener btnClickListener = new View.OnClickListener() {
public void onClick(View v) {
//传递参数调用
contentWebView.loadUrl("javascript:onPageFinished('" + url + "')");
}
};
final class DemoJavaScriptInterface {
DemoJavaScriptInterface() {
}
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
@JavascriptInterface
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
contentWebView.loadUrl("javascript:onPageFinished('" + url + "')");
}
});
}
}
}
video_h5.htm:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
</head>
<style type="text/css">
*{
margin: 0;
padding: 0;
font-family: sans-serif
}
body{
margin:0 auto;
}
#video{
width: 100%;
height: 100%;
}
#video #contentVideo{
margin: 0 auto;
width: 100%;
height: 100%;
}
</style>
<script>
function onPageFinished(videoUrl) {
var video = document.getElementById("contentVideo");
video.src = videoUrl;
video.play();
}
</script>
<body>
<div id="video">
<video id="contentVideo" autoplay="autoplay" controls="controls">
</video>
</div>
</body>
</html>
简单的java与js交互。
下面开始众筹戏了;
小分队在网上看见一些评论说android webview的一些不好的地方,就直接找到一个第三方框架腾讯 http://x5http://x5.tencent.com/index
这个框架抽出了几个api,实现特别简单,这里就直接贴代码了:
java:
if (TbsVideo.canUseTbsPlayer(TbsActivity.this)) { TbsVideo.openVideo(TbsActivity.this, data.get(position)); }AndroidManifest:
<activity android:name="com.tencent.smtt.sdk.VideoActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:exported="false" android:launchMode="singleTask" android:alwaysRetainTaskState="true"> <intent-filter> <action android:name="com.tencent.smtt.tbs.video.PLAY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>打完收工,腾讯x5不止是视频,还有其他的,小分队只需要简单的视频播放而已,所有这里介绍比较少,具体的,你们可以直接进上面的地址。