2016-09-22 16 views
2

私はイオンアプリで作業しています。オーディオファイルを録音する必要があるため、cordova-plugin-mediaを使用しました。 IOSは、私はこのエラーを取得:ionic Cordovaメディアプラグインを使用してIOSでオーディオを録音できませんでした

{ "メッセージ": "AVAudioRecorderを使用して録音を開始できませんでした"、 "コード":1}ここ

は私のコードです:

var extension = '.wav'; 
var name = 'filename'; 
var audio = null; 
var filepath; 

$scope.startRecording = function() { 
    name = Utils.generateFilename(); 
    if(device.platform == "iOS") 
    { 
    //var path = "documents://"; 
    //var path = cordova.file.documentsDirectory; 
    //var path = cordova.file.cacheDirectory; 
    var path = cordova.file.dataDirectory; 
    path = path.replace("file:///", "cdvfile://"); 

    } 
    else if(device.platform == "Android") 
    { 
    var path = cordova.file.externalApplicationStorageDirectory; 
    } 
    var filename = name + extension; 
    filepath = path + filename; 
    audio = new Media(filepath, function(e){console.log(e, "success Media");},function(e){console.log(e, "error");}); 
    audio.startRecord(); 

    }; 

    $scope.sendAudioMsg = function() { 
    audio.stopRecord(); 
    audio.release(); 
    }; 

私はコンソールログ

cdvfile://var/mobile/Containers/Data/Application/F47A76AD-E776-469F-8EFA-85B0A0F14754/Library/NoCloud/dJzSapEU6k16hV7EGrD06L29NjZcOCVzHCUTrcjEDiTCF7uUNGmCHchEcwfGls3V88p85ij0NUkv0KVagevbgh3lwWsEfmAO8uNq.wav

することができます私はこれを取得するパスいずれかの私を助ける?

+0

に「cordova.file.tempDirectory + SRC」を渡すことによって、Tempディレクトリを使用して記録されたファイルの場所を解決してしまいます。これを解決しましたか? – Ionut

答えて

0

Androidで次のようにお試しください。あなたが録音して行われた後

var path = "Android/data/"+YOUR_APP_ID+"/files/"+FILENAME+".wav"; 

var myMedia = new Media(path, success, error); 
myMedia.startRecord(); 

は、ファイルにアクセスするには

var path = cordova.file.externalApplicationStorageDirectory+"files/"+FILENAME+".wav"; 
var myMedia1 = new Media(path, success, error); 
myMedia1.play(); 

YOUR_APP_IDはcom.test.appだろう

のiOSは、ファイル

にアクセスするには

var fileName = "myrec.wav"; 
var myMedia = new Media(path, success, error); 
myMedia.startRecord(); 

を以下を参照してください。

window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (fileSystem){ 
      fileSystem.root.getFile(fileName, null, function (fileEntry){ 
       fileEntry.file(function OnFileEntry(file){ 
        // file is actual recorded file, get the path and play or get base64 string 
        var reader = new FileReader(); 
        reader.onloadend = function(evt) { 
         evt.target.result; // this is base64 string 
        }; 
        reader.readAsDataURL(file); 
       }, error); 
      }, error); 
     }, error); 
+0

私はアンドロイドに何の問題もありません。私はIOSのこのエラーを持っています。私はタイトルに感謝しました。ありがとう –

+0

私は私の答えを更新しました。 – user5091906

+1

iOSで.wavを使用していても「AVAudioRecorderを使って録画を開始できませんでした」 – Ionut

0

私の答えは、IOSのためにのみ

その後、私は実現記録用メディアを使用しようとの組み合わせ

var pathFile = cordova.file.dataDirectory; 
pathFile = 'documents://'; 
pathFile = cordova.file.documentsDirectory; 

以下のいずれかに記録されたファイルの場所を設定するとき、私は同じエラーメッセージを持った

ファイル名だけを渡すとTempディレクトリ(cordova.file.tempDirectory)にファイルが保存されるので、この方法でIOSで動作するように録音されるようになります(私は完全なコードと私の唯一のメモをメディアを使用していました通常のメディアプラグインの代わりに圧縮されたプラグイン)

// Save the recorded fileName 
    var fileName = Math.floor((Math.random() * 100000) + 1) + ".m4a"; 

    if (ionic.Platform.isIOS()) { 
     var pathFile = ''; 
    } else { 
     var pathFile = cordova.file.externalDataDirectory; 
    } 

    src = pathFile + fileName; 

    if (mediaRec == null) { 
     mediaRec = new Media(src, 
      // success callback 
      function() { 
       console.log("recordCompressedAudio():Audio Success"); 
      }, 

      // error callback 
      function (err) { 
       console.log("recordCompressedAudio():Audio Error: " + err.code); 
       console.log(err); 
      }); 
    } 

    // Record MPEG compressed audio, single channel at 16kHz 
    var options = { 
     SampleRate: 16000, 
     NumberOfChannels: 1 
    } 

    mediaRec.startRecordWithCompression(options); 

    console.log("Recording Started"); 
    console.log(mediaRec); 
} 

は、その後、私は同じ問題をencoutered resolveLocalFileSystemURL

console.log("Recording Stopped"); 
    console.log(mediaRec); 
    mediaRec.stopRecord(); 
    mediaRec.release(); 

    resolveLocalFileSystemURL(
     cordova.file.tempDirectory + src, 
     function (entry) { 
      console.log('cdvfile URI: '); 
      console.log(entry); 
      player.src = entry.toURL(); 
      console.log("Saved file location :" + src.toInternalURL()); 
     }, 
     function (error) { 
      console.log('about to resolve this files errors'); 
      console.log(error); 
     }); 
+0

上記の答えと同じではありません –

関連する問題