3

FTPサーバーからMP3ファイルをダウンロードしています。これは、MP3ファイルをダウンロードして再生するAndroidアプリケーション用です。ダウンロードは、apache commonsライブラリを使用してJavaで実装され、コードは主に別のチュートリアルに基づいています。ダウンロードは、Javaを実行しているデスクトップで約10mbのファイルをダウンロードするのに非常に高速に動作しますが、Androidデバイスで実行される同じコード(2つ試しました)では、ダウンロードに5〜10分かかると途方もなく遅くなります。同じファイル。(両方のテストはWifi経由で行われました)。

に基づくコード:http ://androiddev.orkitra.com/?p = 28&cpage = 2#comment-40

以下のコードは、使用される2つの方法を示しています。接続とダウンロードです。

    public boolean connect(String host, String username, String pass, int port){
    try{

        mFTPClient.connect(host, port);

        if(FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
                boolean loginStatus = mFTPClient.login(username,  pass);

                mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
                mFTPClient.enterLocalPassiveMode();
                mFTPClient.setKeepAlive(true);

                return loginStatus;
        }


    } catch (Exception e){
        System.err.println("Error: Could not connect to: " + host);
        e.printStackTrace();
    }

    return false;
}

    public boolean download(String srcFilePath, String dstFilePath) {
    boolean downloadStatus = false;
    try {
        FileOutputStream dstFileStream = new FileOutputStream(dstFilePath);
        downloadStatus = mFTPClient.retrieveFile(srcFilePath,   dstFileStream);
        dstFileStream.close();
        return downloadStatus;
    } catch (Exception e) {
        System.err.println("Error: Failed to download file from " + srcFilePath + " to " + dstFilePath);
    }
    return downloadStatus;
}

うまくいけば、私は必要なすべての詳細に言及しました、そして誰かがそれがなぜそんなに遅いのか、そしてもし私がそれを妥当な時間でダウンロードさせることができるとしたらどうしたらいいのか説明できれば幸いです。

4

2 に答える 2

11

同様の問題に遭遇し、ダウンロードバッファサイズを変更して解決しました。

奇妙なことに、同じコードが Android エミュレーター x86 では非常に高速でしたが、実際のデバイスでは非常に低速でした。

したがって、ダウンロード関数retrieveFileを呼び出す前に、次 のような行を追加します。

mFTPClient.setBufferSize(1024*1024);
于 2013-02-13T19:06:24.493 に答える
0

したがって、ダウンロード関数を呼び出す前に、次のretrieveFileような行を追加します。

mFTPClient.setBufferSize(1024*1024);

これが正しい解決策です。私のアプリは、20 分で 10 個のファイルをダウンロードするのに時間がかかりました。このバッファの変更には 1 分かかります。優しい。どうもありがとうございました。

于 2014-05-25T18:44:52.560 に答える