`

android ->cordova record 录音

 
阅读更多

 

<!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^)/~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics