Ich benutze Cordova, um eine HTML5/JS-App zu erstellen.Cordova Record Audio auf ios9 funktioniert nicht
Ich muss Audio aufzeichnen und abspielen, also verwende ich Media & Datei-Plug-Ins, aber ich habe Probleme, damit es unter iOS funktioniert.
Meine Schritte:
1)
ich erkennen Plattform (Android oder iOS).
Wenn Android, keine Notwendigkeit, etwas einzustellen, funktioniert es.
Wenn Ios, stelle ich die Datei URI '../Library/NoCloud/' (nach Raymond Camden article Lesen),
dann erstelle ich Datei vor der Aufnahme:
var mediaBaseUrl = '';
if(app.isIOS){
mediaBaseUrl ='../Library/NoCloud/';
createFileSystem();
}
Meine Funktion Create ist :
createFileSystem : function(){
var fileName= mediaBaseUrl+[myFileName];
//asking for a new space
window.requestFileSystem(
LocalFileSystem.PERSISTENT,
0,
//success
function(fileSystem){
fileSystem.root.getFile(
fileName,
{ create: true, exclusive: false },
//success callback
function(){
console.log('ok file created');
},
null
);
},
// error
function() {
console.log("***log: failed in creating media file in requestFileSystem");
}
);
},
2) Sobald Datei erstellt wird, mache ich mit Media-Konstruktor aufgenommene Datei:
var recordedFile = new Media(
mediaBaseUrl + [myFileName],
// success callback
function() {},
// error callback
function (err) {
console.log("recorded file error ");
console.log(err)
}
);
3) In Config XML, habe ich diese Zeile in iOS Library-Ordner aufnehmen, und ohne Speichern in Cloud:
<preference name="iosPersistentFileLocation" value="Library" />
<preference name="BackupWebStorage" value="none" />
Mein Problem:
Auf Android-Gerät, alles ist in Ordnung kann ich dann aufzeichnen Audiodatei aufzeichnen.
Aber auf dem iOS-Gerät (ipad2), sind einige Dinge seltsam:
mit meinem Dateinamen "../Library/NoCloud/myFileName", ich habe keinen Erfolg Rückruf für fileSystem.root.getFile Funktion , aber ich kann eine Datei mit dem guten Namen und dem guten Platz in meinem ipad Bibliothek/NoCloud-Ordner sehen, , außer die Datei ist leer. Der Medienkonstruktor kann die Datei nicht wiedergeben und gibt daher einen Fehler zurück.
wenn ich myFileName als „myFileName“ gesetzt, ich habe den Rückruf der Erstellung der Datei (‚ok Datei erstellt‘), aber die Medien Konstruktor kann nicht auf die Datei zugreifen und zurück die Fehler:
message: "Cannot use audio file from resource 'test.wav'", code: 1
Ich habe das iPad Mikrofon überprüft, es ist für diese App aktiviert. Ich glaube es funktionierte vor dem iOS Update auf dem iPad (jetzt iOS 9.3.2), btu bin ich mir nicht mehr sicher. Gibt es etwas, das ich falsch gemacht habe, oder gibt es eine neue Art zu verarbeiten?
danke!
ich bin verwirrt - warum Sie die Datei erstellen * vor * die Aufnahme? Sollte es nicht genau das Gegenteil sein? –
Ok, ... ich bin auch verwirrt :) Ich denke, ich war völlig falsch in der Art, über den Prozess nachzudenken: Ich dachte, dass iOS einen Speicherort vorher schreiben muss, um es mit den aufgezeichneten Daten zu füllen. Aber das ist offensichtlich nicht der Fall. Also wenn ich jetzt verstehe: Hat das System die Audiodaten aufgenommen, muss ich die FileSystem Funktion nur zum Speichern meiner aufgezeichneten Daten anfordern? Vielen Dank ! –
In der Tat habe ich einige Artikel gelesen, bevor ich meinen Code schrieb, zum Beispiel dieser http://stackoverflow.com/questions/9241157/using-phonegap-to-record-audio-to-documents-folder-on-ios in Es wird gesagt, dass eine Dateireferenz vor der Erstellung der Mediendatei erstellt wird, da ios eine src benötigt, die bereits existiert ... deshalb habe ich diesen Code geschrieben ... –