1

Ich benutze angularjs in Visual Studio.using Cordova Medien-Plugin startRecord() und stopRecord() funktioniert, aber nicht in der Lage zu pausieren und Aufnahme fortzusetzen.Ich bin kein Media Capture Plugin verwenden, da ich keinen Standard Rekorder installiert habe.wie pausieren und fortsetzen Sprachaufzeichnung in android mit cordova Medienplugin

Dies ist mein Code:

var audurl = '///storage/emulated/0/New/'; 
audurl += 'Voice_' + '.amr'; 
var mediaRec; 
function recordAudio() { 
    mediaRec = new Media(audurl, onSuccess, onError); 
    mediaRec.startRecord(); 
} 
function pauseAudio() { 
    mediaRec = new Media(audurl, onSuccess, onError); 
    mediaRec.pauseRecord(); 
} 

dank ...

+0

[Dies] (https://github.c om/apache/cordova-plugin-media # quick-example-7) Beispiel zeigt alles, was Sie wissen wollen. Obwohl es automatisch angehalten und fortgesetzt wird (mit setTimeout), wird gezeigt, wie die Aufnahme fortgesetzt wird. – Blauharley

+0

Kann ich beim Klicken auf die Schaltfläche anhalten und fortsetzen? – abc

+0

Ich denke, wie in der Dokumentation Pause und Fortsetzung der Arbeit ist nur in iOS. – abc

Antwort

0

auf meinem Handy die Methode media.resumeRecord nicht verfügbar war, obwohl in diesem soure-code sie definiert ist. Dennoch können Sie die Vorteile aller anderen Methoden erfolgen, wie startRecord und stopRecord, eine Art resumeRecord Funktion neu zu erstellen, wie es in einem Handler unten getan wird:

var myRecordHandler = function() { 

    // ALL RECORDED FILES ARE SAVED IN THIS ARRAY 
    var recordedAudioFiles = []; 

    // REMEMBER POSITION WHEN PLAYING IS STOPPED 
    var currentPosition = {index:0,shift:0}; 

    // PAUSE-MODE 
    var paused = false; 

    // SET A SPECIFC DIRECTORY WHERE THE FILES ARE STORED INTO 
    // DEFAULT: '' 
    this.setDirectory = function(dir) {this.dir=dir;}; 

    // SET FILENAME 
    // DEFAULT: recoredFilesX 
    this.setFilename = function(filename) {this.filename=filename;}; 

    // SET MIME/Type of THE FILES; 
    // DEFAULT: mp3 
    this.setFileType = function(type) {this.filetype=type;}; 

    // GET ALL RECORED FILES 
    this.getAllFiles = function() {return recordedAudioFiles;}; 

    // STOP/PAUSE RECORDED FILES 
    var handleRecordedFileHold = function() { 
    for (var r = 0; r < recordedAudioFiles.length; r++) { 

     var recordedAudioFile = recordedAudioFiles[r]; 

     if(recordedAudioFile.isBeingRecorded){ 
     if(paused)recordedAudioFile.media.pause(); 
     else recordedAudioFile.media.stop(); 
     continue; 
     } 

     recordedAudioFile.duration = new Date().getTime() - recordedAudioFile.startTime; 
     // call release to free this created file so that it could get deleted for instance 
     recordedAudioFile.media.stopRecord(); 
     recordedAudioFile.media.release(); 
     recordedAudioFile.isBeingRecorded = true; 
    } 
    } 

    // START RECORDING 
    this.startAudioRecording = function() { 

    paused = false; 
    handleRecordedFileHold(); 

    var dir = this.dir ? this.dir : ''; 
    var filename = this.filename ? this.filename : 'recoredFiles'; 
    var type = this.filetype ? this.filetype : 'mp3'; 

    var src = dir + filename + (recordedAudioFiles.length + 1) + '.' + type; 
    var mediaRec = new Media(src, 
     function() { 
     console.log('recordAudio():Audio Success'); 
     }, 
     function (err) { 
     console.log('recordAudio():Audio Error: ' + err.code); 
    }); 
    recordedAudioFiles.push({ 
     media: mediaRec, 
     startTime: new Date().getTime() 
    }); 
    mediaRec.startRecord(); 
    } 

    // PAUSE RECORDING 
    this.pauseRecoredFiles = function() { 
    if(recordedAudioFiles.length){ 
     paused = true; 
     clearTimeout(currentPosition.timeout); 
     handleRecordedFileHold(); 
     var recoredMedia = recordedAudioFiles[currentPosition.index].media; 
     recoredMedia.getCurrentPosition(
      function (position) { 
       currentPosition.shift = position; 
      }, 
      function (e) { 
       console.log("Error getting pos=" + e); 
      } 
     ); 
    } 
    } 

    // PLAY RECORD 
    this.playRecordedFiles = function() { 
    handleRecordedFileHold(); 
    var playNextFile = function() { 
     var recoredMedia = recordedAudioFiles[currentPosition.index]; 
     if (recoredMedia) { 
     if(paused){ 
      recoredMedia.media.seekTo(currentPosition.shift*1000); 
      paused = false; 
     } 
     recoredMedia.media.play(); 
     currentPosition.timeout = setTimeout(function() { 
      currentPosition.index++; 
      recoredMedia.media.stop(); 
      playNextFile(); 
     }, recoredMedia.duration ? recoredMedia.duration : 0); 
     } 
     else{ 
     paused = false; 
     currentPosition.index = currentPosition.shift = 0; 
     } 
    }; 
    playNextFile(); 
    } 

    // RESET PLAY 
    this.stopRecordedFiles = function() { 
    currentPosition.index = currentPosition.shift = 0; 
    clearTimeout(currentPosition.timeout); 
    handleRecordedFileHold(); 
    } 

    // REMOVE ALL RECORDED FILES 
    this.removeRecordedFiles = function() { 
    paused = false; 
    currentPosition.index = currentPosition.shift = 0; 
    clearTimeout(currentPosition.timeout); 
    handleRecordedFileHold(); 
    recordedAudioFiles = []; 
    } 

}; 

var handler = new myRecordHandler(); 

// you can use this handler in your functions like this: 
function recordAudio() { 
    // records one track and stops former track if there is one 
    handler.startAudioRecording(); 
} 

function playAudio() { 
    handler.playRecordedFiles(); 
} 

function pauseAudio() { 
    handler.pauseRecoredFiles(); 
} 

function resumeAudio() { 
    pauseAudio(); 
    recordAudio(); 
} 

function stopAudio() { 
    handler.stopRecordedFiles(); 
} 

Obwohl konnte ich nicht testen Sie Ihre Verzeichnis/Dateinamen, weil ich auf meinem Handy erstellt dieses Verzeichnis nicht haben, können diese Methoden helfen Ihnen, in einem bestimmten Verzeichnis Ihre Dateien zu speichern, sowie mit bestimmten Dateinamen:

handler.setDirectory('__YOUR_DIR__'); 

handler.setFilename('__YOUR_FILENAME__'); 

handler.setFileType('__YOUR_FILETYPE__'); 
+0

auch versucht, dies aber das gleiche Problem.Auch wenn ID jedes Mal generiert, wie stopRecord() funktioniert. – abc

+0

Haben Sie bereits eine aufgenommene Audiodatei abgespielt? Leuchtet während der Aufnahme eine rote LED? Diese Methoden sollten funktionieren, ansonsten müssen Sie die Entwickler selbst informieren, tut mir leid. – Blauharley

+0

ja, aber es ist kein LED-Licht glühend.Aktuell verwende ich keine Standard-Rekorder, ich habe eine UI, um dies zu tun – abc

Verwandte Themen