‘SVideo’—使用MUI做视频上传第二弹

之所以用“弹”不用“谈”,是弹弹弹...

在使用MUI来开发接近原生App的体验效果时,遇到很多坑。比如视频拍摄时,如果不考虑视频时长,使用H5+plus API还是比较可观的,但你若使用了NJS的方式去使用原生的摄像头录制方式的话,需要设置其像素为高才能达到好的体验(但某厂的设备在高像素下不支持)。所以这就需要你去开发SDK插件,可以使用三方的视频录制插件(目前还未进行开发)。
在这里我使用的NJS的方式去录制,后续会编写一套使用三方录制视频的Demo,敬请期待吧。

1. 点击按钮
<a id="videoCam" class="mui-icon mui-icon-videocam mui-pull-left"></a>
2. 监听按钮调用原生摄像头拍摄视频
//拍摄视频
function captureVideo() {
    var TIMEOUT = 5; //录像时间 5 秒
    // 调用原生android摄像头
    var VIDEOZOOM = 200;
    var MediaStore = plus.android.importClass("android.provider.MediaStore");
    var Intent = plus.android.importClass("android.content.Intent");
    // 导入后可以使用new方法创建类的示例对象
    var intent = new Intent("android.media.action.VIDEO_CAPTURE");
    intent.putExtra("android.intent.extra.videoQuality", 0); //0 means low quality, 1 means high quality
    intent.putExtra("android.intent.extra.durationLimit", TIMEOUT); //设置录像时间,5秒钟

    var main = plus.android.runtimeMainActivity();
    main.startActivityForResult(intent, VIDEOZOOM);
    // 获取返回参数
    main.onActivityResult = function(requestCode, resultCode, data) {
        if (requestCode == 200 && resultCode == -1) {
            var context = main;
            plus.android.importClass(data);
            var uri = data.getData();
            var resolver = context.getContentResolver();
            plus.android.importClass(resolver);
            var cursor = resolver.query(uri, null, null, null, null);
            plus.android.importClass(cursor);
            cursor.moveToFirst();
            var column = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
            // 获取录制的视频路径
            var path = cursor.getString(column);
            if (path) {
                mui.openWindow({
                    url: "videocam.html",
                    id: "videocam",
                    extras: {
                        videoPathUrl: path
                    },
                    createNew: false, //是否重复创建同样id的webview,默认为false:不重复创建,直接显示
                });
            } else {
                mui.toast("录制小视频失败!");
            }
        } else {
            mui.toast("您取消了录制视频!");
        }
    }
}

在上面代码中,我们在录制完成后会获取到视频的路径。我们通过mui.openWindow()函数并传值在新页面进行视频上传。

转载于:https://www.jianshu.com/p/ac92bd288c4f

猜你喜欢

转载自blog.csdn.net/weixin_34026484/article/details/91343624