<!DOCTYPE html>
<html lang="en">
<head>
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" id="viewport" name="viewport">
<meta charset="utf-8">
<title></title>
<script type="text/javascript" src="./js/jquery-1.11.1.js"></script>
<script type="text/javascript" src="./js/jQuery.md5.js"></script>
<script language="javascript" src="./js/cordova.js" > </script>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p id="test">操作提示</p><!--这里会显示录音操作中的各个变化-->
<input type="button" value="录音" id="luyin" />
<input type="button" value="录音完成" id="luyin_finish" />
<input type="button" value="录音播放" id="luyin_bofang" />
<input type="button" value="录音上传 " id="luyin_upload" />
</div>
</div>
<script type="text/javascript">
var mediaRec;
var recTimeMax = 10;
var recTime = 0;
var recordFile = "myrecording.amr";
//开始录音
function recordAudio() {
var src = recordFile;
mediaRec = new Media(src, onSuccess, onError);
// Record audio
mediaRec.startRecord();
// Stop recording after 10 sec
recTime = 0;
var recInterval = setInterval(function() {
recTime = recTime + 1;
if (recTime >= recTimeMax) {
clearInterval(recInterval);
mediaRec.stopRecord();
mediaRec.release();
}
}, 1000);
}
// onSuccess Callback
//
function onSuccess() {
console.log("recordAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
//==========
//录音完成
function recordFinish() {
recTime = recTimeMax;
}
//播放audio
function playAudio(url) {
// Play the audio file at url
var my_media = new Media(url,
// success callback
function() {
console.log("playAudio():Audio Success");
},
// error callback
function(err) {
console.log("playAudio():Audio Error: "+err);
});
// Play audio
my_media.play();
}
//\\
//上传
function uloadRecord(){
var win = function (r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
var fail = function (error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = recordFile;
options.mimeType = "audio/wav";
var ft = new FileTransfer();
ft.upload('/sdcard/'+recordFile, encodeURI("http://192.168.1.101/upload_record/index.php"), win, fail, options);
}
//为按钮绑定 touchstart(点击) 事件
$("#luyin").click(function(){
//实例化录音类
recordAudio();
//开始录音
$("#test").html("开始录音");
});
//录音 完成
$('#luyin_finish').click(function(){
recordFinish();
});
//录音 播放
$('#luyin_bofang').click(function(){
playAudio(recordFile);
});
//录音 上传
$('#luyin_upload').click(function(){
uloadRecord()
});
</script>
</body>
</html>
upload.php
<?php
// Where the file is going to be placed
$target_path = "records/";
/* Add the original filename to our target path.
Result is "uploads/filename.extension" */
$target_path = $target_path . basename( $_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) {
echo "The file ". basename( $_FILES['file']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
echo "filename: " . basename( $_FILES['file']['name']);
echo "target_path: " .$target_path;
}
?>
manifest 的权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
附件 是 2.91 版本的 js 和 jar
*** 解决 android 录音 在 ios 不能播放的问题,
android 录音格式 改为 mp3
修改 cordova media 插件源码
android/java/org.apache.cordova/media/AudioPlayer
修改 startRecording 方法
this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC); this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
这样就可以了, 亚达\(^o^)/~