Closed tigawa closed 10 years ago
iOSを対応するためには、monacaからphone Gapを使うしかなさそう http://ascii.jp/elem/000/000/640/640963/index-2.html
monacaのドキュメントを元に実装するがエラーになる。 http://docs.monaca.mobi/1.0/ja/reference/phonegap_29/ja/media/media/#media-startrecord-ja
エラーになる箇所 ★の箇所でonErrorが呼び出されてエラーになる。
// オーディオの録音
//
function recordAudio() {
var src = "myrecording.amr";
★ var mediaRec = new Media(src, onSuccess, onError);
原因を調査中
問題解決!! 【原因】 録音を保存するファイルを、Adaptive Multi-Rate フォーマット(.amr)にしていたが、iosではwav形式にする必要があった。i osは録音については、wav形式しかサポートしていない。 【対応】 wav形式に変更する。 但し、androidでは、.amr形式である必要があるため、処理を切替える必要がある。
ドキュメントの注意事項にきちんと書いてあった、ドキュメントは最後まで読まないとだめね。
サンプルソース 起動して10秒録音した後に、再生する。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>デバイスプロパティーの使用例</title>
<script src="plugins/plugin-loader.js"></script>
<link rel="stylesheet" href="plugins/plugin-loader.css">
<link rel="stylesheet" href="css/style.css">
<script type="text/javascript" charset="utf-8">
// Cordova の読み込み完了まで待機
//
document.addEventListener("deviceready", onDeviceReady, false);
// オーディオの録音
//
function recordAudio() {
var src = "myrecording.wav";
var mediaRec = new Media(src, onSuccess, onError);
// オーディオの録音
mediaRec.startRecord();
// 10秒後に録音を停止
var recTime = 0;
var recInterval = setInterval(function() {
recTime = recTime + 1;
setAudioPosition(recTime + " sec");
if (recTime >= 10) {
clearInterval(recInterval);
mediaRec.stopRecord();
mediaRec.play();
}
}, 1000);
}
// Cordova 準備完了
//
function onDeviceReady() {
recordAudio();
}
// 成功時のコールバック関数
//
function onSuccess() {
console.log("recordAudio():Audio Success");
}
// エラー時のコールバック関数
//
function onError(error) {
alert('コード: ' + error.code + '\n' +
'メッセージ: ' + error.message + '\n');
}
// 再生位置をセット
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}
</script>
</head>
<body>
<p id="media">オーディオを録音...</p>
<p id="audio_position"></p>
</body>
</html>
IOSは対応してなさそう。 :-1: Androidのchromeなら対応してそう!! http://www.gcgate.jp/engineerblog/2014/03/28/874/