安卓内部加载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”} 
安卓内部加载word,pdf,ppt文档视频_第1张图片

 

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

image2.png

 

5.添加权限

 
    
    
    
    
    

 

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.布局



    

    

 

 

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);
        }
    }





}

 

你可能感兴趣的:(安卓内部加载word,pdf,ppt文档视频)