1.安装录音插件:cordova plugin add https://github.com/emj365/cordova-plugin-audio-recorder-api
2.安装媒体插件,用来播放录音:cordova plugin add https://github.com/apache/cordova-plugin-media
3.添加FileTransfer插件:cordova plugin add cordova-plugin-file-transfer
.factory('huanxinIonic', function($ionicLoading,$cordovaVibration,$http,$rootScope,Storage,$ionicScrollDelegate,$timeout,$cordovaNativeAudio,$cordovaMedia) {
return {
//发送、接收消息,页面到最底部
viewScroll : function(){
var viewScroll = $ionicScrollDelegate.$getByHandle('messageDetailsScroll');
$timeout(function() {
viewScroll.scrollBottom();
}, 0);
},
//开始录音
startRecord : function(){
window.plugins.audioRecorderAPI.record(function(msg) { // 调用audioRecorderAPI成功
console.log('ok: ' + msg); }, function(msg) { // 调用audioRecorderAPI失败
console.log('ko: ' + msg); },60); // record 60 seconds
},
//停止录音
stopRecord : function(data){
window.plugins.audioRecorderAPI.stop(function(file) {
//录音停止后会返回录音文件的路径,file就是这个路径。 苹果上是.m4a格式的
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = file.substr(file.lastIndexOf('/')+1);
options.mimeType = "text/plain";
var ft = new FileTransfer();
ft.onprogress = function(progressEvent) {
//上传中
console.log("上传中");
//console.log(progressEvent.loaded);
};
ft.upload('file:///'+file, encodeURI("上传地址"),
function(re){
var status = JSON.parse(re.response).success;
if(status){
console.log("上传成功");
}
}, function(e){
console.log(JSON.stringify(e));
}, options);
//通过 FileTransfer 对象的 abort() 方法可以中断当前进行的上传、下载操作
//ft.abort();
});
},
//播放录音,音频文件url
playRecord : function(file){
var media = new Media(file);
media.play();
}
}
})
后台PHP代码
<?php
move_uploaded_file($_FILES["file"]["tmp_name"],
$_SERVER["DOCUMENT_ROOT"]."/uploadFiles/" . $_FILES["file"]["name"]);
?>
如果move_uploaded_file返回false,就可能是文件夹权限问题
解决方案:chmod -R 777 某文件夹的绝对路径
你们看不懂的话可以看看以下2个链接。我也是看了这两个说明才搞出来的
ionic+angularjs+cordova 录音,播放录音:http://www.imooc.com/article/15436
Cordova - fileTransfer插件的使用详解(实现文件上传、下载):http://www.hangge.com/blog/cache/detail_1180.html