安卓代码摘自论坛 http://ask.dcloud.net.cn/question/45756
IOS 代码核心就是一个 videoMaximumDuration 参数
注意事项为 IOS 必须使用HbuilderX 真机调试、打包
使用到的5+ API http://www.html5plus.org/doc/zh_cn/camera.html#plus.camera.CameraOptions
附件为测试代码
function captureVideo(callback){
var TIMEOUT = 5; //录像时间 5 秒
if(mui.os.android) {
// 调用原生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.provider.MediaStore.EXTRA_OUTPUT", url);
intent.putExtra("android.intent.extra.durationLimit", TIMEOUT); //设置录像时间,5秒钟
var main = plus.android.runtimeMainActivity();
main.startActivityForResult(intent, VIDEOZOOM);
// 获取返回参数
main.onActivityResult = function(requestCode, resultCode, data) {
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) {
callback && callback(path);
} else {
mui.toast("录制小视频失败");
}
}
} else {
/**
* HBuilderX已更新:iOS平台 新增 支持摄像头录像(plus.camera.startVideoCapture)设置视频长度(videoMaximumDuration)
* http://ask.dcloud.net.cn/question/59024
*/
var cmr = plus.camera.getCamera();
var res = cmr.supportedVideoResolutions[0];
var fmt = cmr.supportedVideoFormats[0];
cmr.startVideoCapture(function(path) {
callback && callback(path);
}, function(error) {
mui.toast("取消录制小视频");
}, {
resolution: res,
format: fmt,
filename: "_downloads/ibos/video/",
videoMaximumDuration:TIMEOUT //该参数仅支持HBuilderX 打包
});
}
}