安卓内部加载word,pdf,ppt文档视频

1.官网下载所需SDK   腾讯TBS服务官网介绍   下载第一个就行

TBS下载页.jpg

 

2.导入jar包

jar包.png

 

3.设置ndk支持

x5暂时不提供64位so文件,为了保证64位手机能正常加载x5内核,进行以下两项设置: 
打开对应module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果没有defaultConfig{}则手动添加)添加如下配置: ndk{abiFilters “armeabi”} 

 

4.导入so文件   在下载的sdk里面有

image2.png

 

5.添加权限

 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

 

6.主函数

public class MainActivity extends AppCompatActivity implements TbsReaderView.ReaderCallback {


    RelativeLayout mRelativeLayout;
    private TbsReaderView mTbsReaderView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化Tbs
        mTbsReaderView = new TbsReaderView(this, this);
        //实例化显示页面
        mRelativeLayout = findViewById(R.id.tbsView);
        //向布局里添加Tbs
        mRelativeLayout.addView(mTbsReaderView,new RelativeLayout.LayoutParams(-1,-1));
       init();
    }

    private void init() {
        QbSdk.initX5Environment(getApplicationContext(), new QbSdk.PreInitCallback() {
            @Override
            public void onCoreInitFinished() {

            }

            @Override
            public void onViewInitFinished(boolean b) {
                Log.d("aaaaaa", "内核加载成功: "+b);
                //第一个参数是文件完整的地址   第二个参数是文件名
                displayFile(Environment.getExternalStorageDirectory()+"/wsnd.doc","wsnd.doc");
            }
        });
    }
    //因为用的是腾讯的插件  必须要有腾讯的文件夹可以这么理解   所以手机里必须要有这个文件夹  没有要创建    这是创建文件夹的地址
    private String tbsReaderTemp = Environment.getExternalStorageDirectory() + "/TbsReaderTemp";
    private void displayFile(String filePath, String fileName) {

        //增加下面一句解决没有TbsReaderTemp文件夹存在导致加载文件失败
        String bsReaderTemp = tbsReaderTemp;
        //这里就是判断有就不创建   没有就创建这个文件夹
        File bsReaderTempFile = new File(bsReaderTemp);
        if (!bsReaderTempFile.exists()) {
            Log.d("print", "准备创建/TbsReaderTemp!!");
            boolean mkdir = bsReaderTempFile.mkdir();
            if (!mkdir) {
                Log.d("print", "创建/TbsReaderTemp失败!!!!!");
            }
        }
        Bundle bundle = new Bundle();
   /*   1.TbsReader: Set reader view exception:Cannot add a null child view to a ViewGroup
        TbsReaderView: OpenFile failed! [可能是文件的路径错误]*/
   /*   2.插件加载失败
        so文件不支持;*/
   /*
   ndk {
            //设置支持的SO库架构  'arm64-v8a',
            abiFilters 'armeabi', "armeabi-v7a",  'x86'
        } */
   /*
        3.自适应大小

    */

        //打印路径
        Log.d("print", "displayFile: "+fileName);
        Log.d("print", "filePath" + filePath);
        Log.d("print", "tempPath" + tbsReaderTemp);
        bundle.putString("filePath", filePath);//添加需要读取文件的路径   上面已经预备好了
        bundle.putString("tempPath", tbsReaderTemp);//添加创建需要的文件夹  上面已经预备好了
        //第一个参数是放读取文件的类型  比如word文档是doc   dpf  ppt 当然我们这里只需要传入文件名会调用这个方法自动识别上面类型 第二个参数不用管
        boolean result = mTbsReaderView.preOpen(getFileType(fileName), false);
        Log.d("print", "查看文档---" + result);
        if (result) {
            //开始执行Tbs
            mTbsReaderView.openFile(bundle);
        } else {

        }


    }
    private String getFileType(String paramString) {
        String str = "";

        if (TextUtils.isEmpty(paramString)) {
            Log.d("print", "paramString---->null");
            return str;
        }
        Log.d("print", "paramString:" + paramString);
        int i = paramString.lastIndexOf('.');
        if (i <= -1) {
            Log.d("print", "i <= -1");
            return str;
        }

        str = paramString.substring(i + 1);
        Log.d("print", "paramString.substring(i + 1)------>" + str);
        return str;
    }



    @Override
    public void onCallBackAction(Integer integer, Object o, Object o1) {

    }
    //最后别忘记停止
    @Override
    protected void onDestroy() {
        super.onDestroy();
        mTbsReaderView.onStop();
    }
}

 

7.布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/tbsView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        >

    </RelativeLayout>
</LinearLayout>

 

 

8.附上根底  /storage/emulated/0/wsnd.doc    这个地方必须要有对于的文件  我上面写的是wsnd.doc   这个路径必须要有这个文件

 

 

9.视频的话    直接在这个基础上添加以下代码

public class MainActivity extends AppCompatActivity {

    private String url="http://125.39.7.21/omts.tc.qq.com/ASRf20vDz9rC-GgewlopFVFfH51dcbp7809uWikpvLJc/uwMRJfz-r5jAYaQXGdGnC2_ppdhgmrDlPaRvaV7F2Ic/mTx_vaPrR9xrCW7i2ItnryZYiYP-JZAEu8DfwYfqCILWm96XkoDuX5WdHoqlHgx8snRQ_T-7oVpLpf6M-8A8agYyESaerGYN5i0vlfZiWGrBQeHDNq9KHYHOwPc30DwN3gPObAEpujxx2WwcW_uVSvKkPUaW_U7g/024_x06720yhekx.321002.1.ts?index=24&start=287760&end=293589&brs=23206908&bre=23573695&ver=4";


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initvidio();


    }

    private void initvidio() {
        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

            @Override
            public void onViewInitFinished(boolean b) {
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                Log.d("app", " onViewInitFinished is " + b);
                startPlay(url);

            }

            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub
            }
        };

        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(), cb);





    }

    /**
     * 直接调用播放视频
     * @param videoUrl 视频地址
     */
    private void startPlay(String videoUrl){
        //判断当前是否可用
        if(TbsVideo.canUseTbsPlayer(getApplicationContext())){
            //播放视频
            TbsVideo.openVideo(getApplicationContext(), videoUrl);
        }
    }





}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值