试图上传音频媒体文件的电话盖普 - 工作iOS,无法找到android


  • 我们有一个记录音频,使用PhoneGap Media API的应用程序,在iOS的情况下,文件API。
  • 当用户单击 Accept&上传按钮,应用程序将文件移至服务器,用于使用phonegap的file.filetransfer()方法。
  • 与iOS合作,android不多。
  • 当我将我的Android设备连接到计算机并以驱动器安装为驱动器时,我可以看到该文件在根部被创建。
  • 创建音频文件后,我能够从存储在全局var fullRecordPath中的位置上播放文件,= recording.wav
  • 当我尝试指向file.filetransfer()时,我会得到错误代码= 1,我知道找不到 file

代码处理 Accept&上传点击事件:

$('#btnAcceptUpload').live('tap',function () {
    if(isIOS){
        thisFileToUpload = fullRecordPath;
    } else {
        // thisFileToUpload = './'+fullRecordPath;          //doesn't work
        // thisFileToUpload = 'file:///'+fullRecordPath;    //doesn't work
        thisFileToUpload = fullRecordPath;                  //doesn't work
    }
    var options = new FileUploadOptions();
    msg = '';
    options.fileKey="file";
    msg += "options.fileKey = "+options.fileKey+"n";
    options.fileName=thisFileToUpload.substr(thisFileToUpload.lastIndexOf('/')+1);
    msg += "options.fileName = "+options.fileName+"n";
    options.mimeType='audio/wav';
    options.chunkedMode = false;
    msg += "options.mimeType = "+options.mimeType+"n";
    msg += "thisFileToUpload = "+thisFileToUpload;
    alert(msg);
    var ft = new FileTransfer();
    ft.upload(thisFileToUpload, "http://10.0.17.121/~email/ttmovefiles.php", fileUploadSuccess, fileUploadFailure, options);
});

成功回调:

function fileUploadSuccess(r) {
    console.log("Code = " + r.responseCode);
    console.log("Response = " + r.response);
    console.log("Sent = " + r.bytesSent);
    alert(r.response);
}

失败回调:

function fileUploadFailure(error){
    alert("An error has occurred: Code = " + error.code);
}

感谢您的查看。

好吧,好的。我想出了这个。我保证我会稍后再仔细地拧紧并收紧它,但想记录下来,所以我可能会结束帮助另一个。

  • 在iOS中创建您别无选择的新媒体,您必须使用文件API。文件系统中相同的完全合格的位置已移至相同的全局var。
  • 不确定为什么它是这样工作的,但是使用Android,Media.play()不喜欢完全合格的路径。它只是想要文件名,显然是从根部搜索的。
  • file.filetransfer.upload()总是希望资产的完全合格的路径上传,无论iOS或Android。

使这项工作:

我使用文件API创建了音频媒体然后用来将录音转移到的文件。我设置了2个全局var:一个用于在设备fullRecordPath上播放音频,另一个用于上传fullUploadPath

这是创建文件的功能,调用媒体API并设置Android想要的全局var:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){
    fileSystem.root.getFile(recordFileName, {
        create: true,
        exclusive: false
    }, function(fileEntry){
        alert("---------> Android File " + recordFileName + " created at " + fileEntry.fullPath);
        fullRecordPath = recordFileName;
        fullUploadPath = fileEntry.fullPath;
        mediaVar = new Media(recordFileName, function(){
            alert("Android media created successfully");
        }, androidMediaCreateFailure, mediaStatusCallback); //of new Media
        onMediaCreated();
    }, androidMediaCreateFailure); //of getFile
}, androidMediaCreateFailure); //of requestFileSystem

这是播放该媒体的代码

function playAudio() {
    var my_media = new Media(fullRecordPath,
        // success callback
        function () {
            console.log("playAudio():Audio Success");
        },
        // error callback
        function (err) {
            console.log("playAudio():Audio Error: " + err.code);
            exposeObject(err);
        });
    my_media.play();
}

这是上传的代码

$('#btnAcceptUpload').live('tap',function () {
    if(isIOS){
        thisfullUploadPath = fullRecordPath;
    } else {
        thisfullUploadPath = fullUploadPath;
    }
    var options = new FileUploadOptions();
    msg = '';
    options.fileKey="file";
    msg += "options.fileKey = "+options.fileKey+"n";
    options.fileName=thisfullUploadPath.substr(thisfullUploadPath.lastIndexOf('/')+1);
    msg += "options.fileName = "+options.fileName+"n";
    options.mimeType='audio/wav';
    options.chunkedMode = false;
    msg += "options.mimeType = "+options.mimeType+"n";
    msg += "thisfullUploadPath = "+thisfullUploadPath;
    alert(msg);
    var ft = new FileTransfer();
    ft.upload(thisfullUploadPath, "http://10.0.17.121/~email/ttmovefiles.php", fileUploadSuccess, fileUploadFailure, options);
});

在Android上您需要解析filesystem

window.resolveLocalFileSystemURI(FILEURI, function(msg){
// success call msg.fullPath
}, function(){
// FAIL
});

最新更新