|

楼主 |
发表于 2017-5-22 14:16:08
|
显示全部楼层
录音音频问题
本帖最后由 keyours 于 2017-5-22 14:30 编辑
目前录音有两种方式:
1,一种就是利用Media对象定义进行录音但是目前插件方法(this.mediaRec.getCurrentPosition()却始终找不到具体的路径。。
我尝试结合filepath插件来找到本机录音的文件(如下),最后进行上传。
require("cordova!cordova-plugin-media"); //利用Media录制插件
require("cordova!cordova-plugin-filepath"); //读取文件
目前也尝试过以下面的这种方式获取文件,但没有看到效果,希望有高手可以研究下这种方式,因为这种可以改成像微信那种按住录音的效果。
- // 获取文件
- Model.prototype.getRecordFile = function(path) {
- var me = this;
- var filePath = path;
-
- //dirEntry为file.wav文件所在的根目录
- resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(fileEntry) {
- dirEntey.getFile(audioName, {}, function(fileEnter) {
- // 获取文件入口
- fileEntry.file(function(file) {
- // 读取文件
- var reader = new FileReader();
- reader.onloadend = function() {
- console.log(this.result);
- };
- reader.readAsDataURL(file);
-
- }, errorHandler);
-
- }, errorHandler);
-
- function onSuccess(fileEntry) {
- console.log(fileEntry.name);
- }
- window.resolveLocalFileSystemURI(file, onSuccess, onError); // 获取文件根目录系统
- }, errorHandler);
- };
复制代码
2,目前为了满足需求,就是调用系统自带的录音机这样就不能自己定义界面,可以取到路径进行上传。如下
require("cordova!cordova-plugin-media-capture"); //本机的录音功能
- //****************************************************************************************************************//
- // 系统自带的录音机录音
- Model.prototype.button2Click = function(event) {
- var data = this.comp("fileData");
-
- // 开始录音(最长录制时间:15秒)
- navigator.device.capture.captureAudio(onSuccess, onError, {duration: 3600});
- // 录制成功
- var me = this;
- function onSuccess(mediaFiles) {
- var i, path, len;
- // 遍历获取录制的文件(iOS只支持一次录制一个视频或音频)
- for (i = 0, len = mediaFiles.length; i < len; i += 1) {
- console.log(mediaFiles);
- path = mediaFiles[i].fullPath;
- mediaFiles[i].name = justep.Date.toString(new Date(), "yyyyMMddhhmmss") + ".wav";
- alert("录制成功!\n\n" + "文件名:" + mediaFiles[i].name + "\n" +
- "大小:" + mediaFiles[i].size + "\n\n" +
- "localURL地址:" + mediaFiles[i].localURL + "\n\n" +
- "fullPath地址:" + path);
-
-
- data.newData({
- index : 0
- });
- data.setValue("filePath", path);
- data.setValue("fileName", mediaFiles[i].name);
- data.setValue('createTime', justep.Date.toString(new Date(mediaFiles[i].lastModifiedDate), justep.Date.DEFAULT_FORMAT));
- me.comp('fileOutput').set({
- value : "成功:" + path
- });
- me.newData = true;
- // 上传文件到服务器
- alert("上传文件名:"+mediaFiles[i].name);
- me.uploadFile(mediaFiles[i]);
- }
- data.newData({
- index : 0
- });
- data.setValue("fileName", mediaFiles[i].name); // 文件名
- data.setValue("createTime", justep.Date.toString(new Date(), justep.Date.DEFAULT_FORMAT));// 开始时间
- data.setValue("timeLen", this.timeLen);// 录音时长
- data.setValue("filePath", path);
- alert(path);
- }
-
- //录制失败
- function onError(error) {
- alert('录制失败!错误码:' + error.code);
- var msg = 'An error occurred during capture: ' + error.code;
- navigator.notification.alert(msg, null, 'Uh oh!');
- }
- };
-
- // 前端传参上传
- Model.prototype.uploadFile = function(mediaFile) {
- var ft = new FileTransfer(), path = mediaFile.fullPath, name = mediaFile.name;
- var options = new FileUploadOptions(); // 文件参数选项
- options.fileKey = "fileAddRecord"; //设置表单名
- options.fileName = mediaFile.name; // imageURI.substr(imageURI.lastIndexOf('/')+ 1);
- // 如果是图片格式,就用image/jpeg,其他文件格式上官网查API
- // video/3gpp
- // video/quicktime
- // image/jpeg
- // audio/amr
- // audio/wav
- options.mimeType = "file";
-
- // 这里的uri根据自己的需求设定,是一个接收上传图片的地址
- var uri = encodeURI("http://172.16.3.133:8080/baas/upload/upload/uploadFile?userID=admin"); //包名+类名+方法
- alert(uri);
- options.chunkedMode = false;
- var params = new Object();
- params.id = "123";
- params.name = "test";
- options.params = params;
- function success(result) {
- // navigator.notification.progressStop();
- alert("文件上传成功" + JSON.stringify(result));
- navigator.notification.alert("文件上传成功!", null, "提醒");
- }
- function fail(message) {
- // 关闭进度条
- //navigator.notification.progressStop();
- alert("文件上传失败:" + JSON.stringify(message));
- }
- // 上传回调
- ft.onprogress = showUploadingProgress;
- //navigator.notification.progressStart("提醒", "当前上传进度");
- ft.upload(path, uri, success, fail, options); // 开始上传
- };
- // 显示上传进度
- function showUploadingProgress(progressEvt) {
- if (progressEvt.lengthComputable) {
- navigator.notification.progressValue(Math.round((progressEvt.loaded / progressEvt.total) * 100));
- }
- }
复制代码
|
|