2

メディア ファイル (mp3、ogg など) を Android デバイスに転送する目的で、HTTP ファイル サーバーを作成しました。のようなAndroidブラウザからサーバーにアクセスした場合

10.0.2.2:ポート番号/パス/to/ファイル

サーバーがファイルのダウンロード プロセスを開始します。もちろん、顧客はそのようなことはしません。ファイル サーバーのテストには問題ありません。私は Android 開発に不慣れで、httpclient パッケージが get/post リクエストを管理できることを知りました。応答を読み取るために使用しているサンプルコードは次のとおりです

DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
  HttpResponse execute = client.execute(httpGet);
  InputStream content = execute.getEntity().getContent();

  BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
  String s = "";
  while ((s = buffer.readLine()) != null) {
    response += s;
  }
} catch (Exception e) {
  e.printStackTrace();
}

return response;

上記のコードは、サーバーがファイルのリストを JSON で送信する場合に正常に機能します。送信ファイルのサーバー部分がコード化されているため、私が立ち往生しているポイントは、Android でメディア ファイルを取得することです。

サーバーから送信された mp3 ファイルを受信する方法について混乱しています。ストリームで読み取る必要がありますか? ありがとう

4

1 に答える 1

2

はい、入力ストリームを介してファイルをディスクに読み込みます。これが例です。ファイル ダウンロードの進行状況バーが必要ない場合は、進行状況に関連するコードを削除してください。

try {
        File f = new File("yourfilename.mp3");
        if (f.exists()) {
            publishProgress(100,100);
        } else {
            int count;
            URL url = new URL("http://site:port/your/mp3file/here.mp3");
            URLConnection connection = url.openConnection();
            connection.connect();
            int lengthOfFile = connection.getContentLength();
            long total = 0;
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream(f);
            byte data[] = new byte[1024];
            while ((count = input.read(data)) != -1) {
                total += count;
                publishProgress((int)(total/1024),lengthOfFile/1024);
                output.write(data, 0, count);
            }
            output.flush();
            output.close();
            input.close();
        }
    } catch (Exception e) {
        Log.e("Download Error: ", e.toString());
    }
于 2012-08-22T18:00:02.917 に答える