2

phonegap がサポートされているすべてのプラットフォームのデフォルトの音楽フォルダーを取得しようとしています。基本的に、以下の機能を使用して、SDカードにファイルをダウンロードして保存できます。しかし、プラットフォームを検出するコードを追加し、プラットフォームのデフォルトの音楽フォルダーを提供して、そこに mp3 ファイルを保存できるようにしたいと考えています。

    function downloadFile(remoteloc,new_name,userid,mid,errorbox,origname)
{
    window.requestFileSystem(
    LocalFileSystem.PERSISTENT, 0, 
    function onFileSystemSuccess(fileSystem) {
        fileSystem.root.getFile(
        "dummy.html", {create: true, exclusive: false}, 
        function gotFileEntry(fileEntry) {
            var sPath = fileEntry.fullPath.replace("dummy.html","");
            var fileTransfer = new FileTransfer();
            fileEntry.remove();
            $('#'+errorbox).html("<div>"+origname+"</div><div class=\"progress progress-danger progress-striped\"><div id='id_p' class=\"bar\" style=\"width: 5%\"></div></div>");
            fileTransfer.onprogress = function(progressEvent) 
            { 
                if (progressEvent.lengthComputable) { 
                    $('#id_p').css('width',Math.ceil((progressEvent.loaded / progressEvent.total)*100)+"%"); 
                } else { 

                } 
            }
            fileTransfer.download(
            remoteloc,
            sPath + new_name,
            function(theFile) {
                $('#'+errorbox).html("<div>"+origname+"</div><div class=\"alert alert-info fade in\"><button class=\"close\" data-dismiss=\"alert\"><span class=\"awe-remove-circle\"></span></button>Download Complete. Added to Media Player</div>"
                +"<div><a href='"+theFile.toURI()+"' target='_blank' class=\"btn btn-success\">Play Song</a></div>"+"<br/>"+theFile.toURI());
                //update the database field to show file has been transfered
                if (!isOnline()) 
                    {
                    $('#error_box').html("<div class=\"alert alert-error fade in\"><button class=\"close\" data-dismiss=\"alert\"><span class=\"awe-remove-circle\"></span></button>Sorry but you seem to be offline.</div>");    
                    return;
                }
                var request={'controller':'music','action':'updatedownload','userid':userid,'mid':mid};
                queryAPI(request,function (d){
                    //check result and set local storage variables
                    if (d.success>0)
                        {
                    } else
                        {

                    }   
                    localStorage.removeItem('resume');
                    window.key=false;
                    //setTimeout(function () {$('#'+errorbox).html("<div>"+origname+"</div>");},3000);
                });             
            },
            function(error) {
                $('#'+errorbox).html("<div>"+origname+"</div><div class=\"alert alert-error fade in\"><button class=\"close\" data-dismiss=\"alert\"><span class=\"awe-remove-circle\"></span></button>Download Error! Error code:"+error.code+"</div>");
            }
            );
        }, 
        fail);
    },
    fail);
}
4

1 に答える 1

1

プラットフォームが大きく異なるため、これを行うための「1 回限りのgetDirectory呼び出し」ソリューションはありません。これを処理する最善の方法は、現在実行しているプラ​​ットフォームをチェックし、それに基づいてファイルを作成することです。

var platform = device.platform;
switch(platform)
{
    case 'iPhone':
      //save to the app document folder
      break;
    case 'Android':
      //save to <external_storage_root>/Music
      break;
    case 'BlackBerry':
      //Save to /SDCard/BlackBerry
      break;
}

正しいファイルパスなどについては、必ず公式ドキュメントを確認してください。

また/var/root/Media/iTunes_Control/Music、iOS の音楽のデフォルト フォルダとして言及されることもありますが、iTunes によって管理されているため、いつでも変更でき、アクセスできる場合は一時的なストレージとしてのみ役立つことに注意してください。ドキュメント フォルダを使用することをお勧めします。

于 2013-03-11T11:03:03.697 に答える