最近项目中加入了附件的功能,查阅后发现Tbs腾讯浏览服务可以更快捷的满足需求。tbs支持的46种文件格式,23种视频格式。
下面贴上主要的代码:
MainActivity.class
datas.add(new AttachBean(".doc","doc文件","http://www.hrssgz.gov.cn/bgxz/sydwrybgxz/201101/P020110110748901718161.doc"));
datas.add(new AttachBean(".mp4","mp4文件","http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"));
datas.add(new AttachBean(".mp3","mp3文件","/storage/emulated/0/kgmusic/download/绿色.mp3"));
datas.add(new AttachBean(".txt","txt文件","http://www.hrssgz.gov.cn/bgxz/sydwrybgxz/201101/P020110110748901718161.txt"));
mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(new AttachAdapter(MainActivity.this,datas));
ViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] perms = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (!EasyPermissions.hasPermissions(mContext, perms)) {
EasyPermissions.requestPermissions(mContext, "需要访问手机存储权限!", 10086, perms);
} else {
String path = attachBean.getPath();
//TBS支持视频播放 包括mp4,rmvb,flv,avi等26种视频格式。
if(path.contains(".mp3")|| path.contains(".wav")|| path.contains(".wma")|| path.contains(".wav")
||path.contains(".rmvb")|| path.contains(".mp4")|| path.contains(".3gp")|| path.contains(".avi")|| path.contains(".flv")) {
Bundle localBundle = new Bundle();
localBundle.putInt("screenMode", 102);
TbsVideo.openVideo(mContext, path,localBundle);
}else {
DisplayAttachActivity.show(mContext, attachBean.getPath());
}
}
}
});
Tbs视频播放器接入说明:
TBS不仅提供了强大的网页浏览功能,更提供了强大的页面H5视频播放支持,播放器同时支持页面,小窗,全屏播放体验,强大的解码能力,包括mp4,rmvb,flv,avi等26种视频格式支持。
第一步: 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>
第二步:播放视频的调用接口:
public static boolean canUseTbsPlayer(Context context) //判断当前Tbs播放器是否已经可以使用。
public static void openVideo(Context context, String videoUrl) //直接调用播放接口,传入视频流的url
public static void openVideo(Context context, String videoUrl, Bundle extraData)
//extraData对象是根据定制需要传入约定的信息,没有需要可以传如null
//extraData可以传入key: "screenMode", 值: 102, 来控制默认的播放UI
//类似: extraData.putInt("screenMode", 102); 来实现默认全屏+控制栏等UI
最后附上代码,希望对有需要的同学可以提供帮助!谢谢
https://download.youkuaiyun.com/download/lou_liang/11474906