Android實現(xiàn)視頻播放--騰訊瀏覽服務(TBS)功能
TBS視頻播放
TBS視頻播放器可以支持市面上幾乎所有的視頻格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, mkv等18種視頻格式。同時支持硬件解碼,使得內存占用,穩(wěn)定性相較于系統(tǒng)播放器都更優(yōu)。
接入TBS
1.導入jar文件和so文件
官網(wǎng)SDK下載地址:https://x5.tencent.com/tbs/sdk.html,示例中有jar文件和so文件,具體導入方式我上一篇文章有詳細介紹(Android應用內展示office文件–騰訊瀏覽服務(TBS))
2.初始化Application
自定義一個Application類,對X5內核進行初始化
public class MyAppliction extends Application {
@Override
public void onCreate() {
super.onCreate();
//回調接口初始化完成接口回調
QbSdk.PreInitCallback pcb=new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
}
@Override
public void onViewInitFinished(boolean b) {
//x5內核初始化完成的回調,為true表示x5內核加載成功,否則表示x5內核加載失敗,會自動切換到系統(tǒng)內核。
Log.e("myApplication", " x5內核加載成功?" + b);
}
};
//x5內核預加載,異步初始化x5 webview所需環(huán)境
QbSdk.initX5Environment(getApplicationContext(), pcb);
}
}
在AndroidManifest.xml進行聲明
<application android:name="com.example.xch.tbsvideoplay.MyAppliction"
3.使用
直接在清單文件AndroidManifest.xml中配置SDK中的視頻播放Activity
<activity android:name="com.tencent.smtt.sdk.VideoActivity" android:alwaysRetainTaskState="true" android:configChanges="orientation|screenSize|keyboardHidden" android:exported="false" android:launchMode="singleTask"> <intent-filter> <action android:name="com.tencent.smtt.tbs.video.PLAY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
在代碼中直接調用TbsVideo.openVideo()播放
/**
* 直接調用播放視頻
* @param videoUrl 視頻地址
*/
private void startPlay(String videoUrl){
//判斷當前是否可用
if(TbsVideo.canUseTbsPlayer(getApplicationContext())){
//播放視頻
TbsVideo.openVideo(getApplicationContext(), videoUrl);
}
}
4.添加權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 硬件加速對X5視頻播放有利,建議開啟 --> <uses-permission android:name="android.permission.GET_TASKS" />
效果圖

優(yōu)化
先看一下優(yōu)化之后的效果


自定義TBS的WebView,充分發(fā)揮X5內核的作用
1.自定義webview
需繼承TBS的webview,包一定不能導錯:com.tencent.smtt.sdk.WebView
public class X5WebView extends WebView {
private WebViewClient client = new WebViewClient() {
/**
* 防止加載網(wǎng)頁時調起系統(tǒng)瀏覽器
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
};
@SuppressLint("SetJavaScriptEnabled")
public X5WebView(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
this.setWebViewClient(client);
initWebViewSettings();
this.getView().setClickable(true);
}
/**
* 初始化webview設置
*/
private void initWebViewSettings() {
WebSettings webSetting = this.getSettings();
...
}
/**
* 這里可以為自定義webview繪制背景或文字
* @param canvas
* @param child
* @param drawingTime
* @return
*/
@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
boolean ret = super.drawChild(canvas, child, drawingTime);
canvas.save();
...
return ret;
}
public X5WebView(Context arg0) {
super(arg0);
setBackgroundColor(85621);
}
}
2.布局中使用自定義WebView
<com.example.xch.tbsvideoplay.tools.X5WebView android:id="@+id/x5_webview" android:layout_width="match_parent" android:layout_height="200dp" android:scrollbars="none" />
3.使用自定義WebView播放視頻
/**
* 使用自定義webview播放視頻
* @param vedioUrl 視頻地址
*/
private void startPlay(String vedioUrl) {
x5webView.loadUrl(vedioUrl);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
x5webView.getView().setOverScrollMode(View.OVER_SCROLL_ALWAYS);
x5webView.setWebChromeClient(new WebChromeClient());
}
4.支持橫豎屏切換
在AndroidManifest.xml中給當前Activity配置configChanges屬性
<activity android:name="com.example.xch.tbsvideoplay.VideoPlayActivity" android:configChanges="orientation|screenSize|keyboardHidden"/>
源碼已上傳至GitHub,需要的可以下載: https://github.com/yangxch/TBSVideoPlay
總結
以上所述是小編給大家介紹的Android實現(xiàn)視頻播放--騰訊瀏覽服務(TBS),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
MVVMLight項目Model?View結構及全局視圖模型注入器
這篇文章主要為大家介紹了MVVMLight項目中Model及View的結構及全局視圖模型注入器的使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
flutter實現(xiàn)掃碼槍獲取數(shù)據(jù)源禁止系統(tǒng)鍵盤彈窗示例詳解
這篇文章主要為大家介紹了flutter實現(xiàn)掃碼槍獲取數(shù)據(jù)源禁止系統(tǒng)鍵盤彈窗示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android4.4開發(fā)之電池低電量告警提示原理與實現(xiàn)方法分析
這篇文章主要介紹了Android4.4開發(fā)之電池低電量告警提示原理與實現(xiàn)方法,結合實例形式分析了Android4.4電池電量警告的原理及相關操作技巧,需要的朋友可以參考下2017-09-09
flutter BottomAppBar實現(xiàn)不規(guī)則底部導航欄
這篇文章主要為大家詳細介紹了flutter BottomAppBar實現(xiàn)不規(guī)則底部導航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07

