Android アプリに与えられたメモリ容量よりも大きなビデオ ファイルをダウンロードしています。*デバイス上にある場合、MediaPlayer はそれらを非常に適切に処理するため、全体のサイズは問題になりません。問題は、byte[] が取り得る比較的少数のメガバイト数を超えると、それらをダウンロードするときに恐ろしい OutOfMemory 例外が発生することです。
私の意図した解決策は、着信バイトストリームをSDカードに直接書き込むことですが、Apache Commonsライブラリを使用しており、私が行っている方法では、ビデオを返す前にビデオ全体を読み込もうとしています.
私のコードは次のようになります。
HttpClient client = new HttpClient();
PostMethod filePost = new PostMethod(URL_PATH);
client.setConnectionTimeout(timeout);
byte [] ret ;
try{
if(nvpArray != null)
filePost.setRequestBody(nvpArray);
}catch(Exception e){
Log.d(TAG, "download failed: " + e.toString());
}
try{
responseCode = client.executeMethod(filePost);
Log.d(TAG,"statusCode>>>" + responseCode);
ret = filePost.getResponseBody();
....
バイト ストリームを一度に 1 バイトずつ取得し、それをディスクに書き出す別の方法に興味があります。