私はメディアプレーヤーでアンドロイドビルドを使用してURLで音楽を再生しているプロジェクトに取り組んでいます。私がこれを達成したいことは、ストリーミングデータをSDカード上のファイルに保存できることです。私はメディアレコーダーでアンドロイドビルドを使用してこれをしようとしましたが、メディアプレーヤーから来ている音だけでなく、電話の周りのすべてを記録しています。Androidメディアプレーヤーから音楽を録音する方法
私の質問はこれを達成するための最良の方法ですか?ここで
は、私はすでにテストしてみた例ですが、私はすべてがOKに行ったかどうかを確認するために、その後のmp3ファイルを再生することはできません。
Log.e("URL AGAIN","url : "+url);
try {
if(!isrecording){
URL urlStream = new URL(url);
InputStream inputStream = urlStream.openStream();
Log.d("", "urlStream.openStream()");
String filename = Environment.getExternalStorageDirectory().getAbsolutePath();
filename += "/deliciousradio.mp3";
File outputSource= new File(filename);
fileOutputStream = new FileOutputStream(outputSource);
Log.d("", "FileOutputStream: " + outputSource);
int bytesRead = -1;
isrecording = true;
byte[] buffer = new byte[30 * 1024];
while ((bytesRead = inputStream.read(buffer)) > 0) {
byte[] buffer2 = new byte[bytesRead];
fileOutputStream.write(buffer2);
Log.d("","bytes size :"+buffer2.length);
Log.d("","bytesRead : "+bytesRead);
}
} else if(isrecording){
fileOutputStream.close();
}
} catch(Exception e){}
ここでの問題は、私は30を受けていますということですバッファ2の長さとして、私は理由を説明することはできません。
ありがとうございました!
入力と出力の形式は何ですか? – Raffaele
私はいつも 'buffer2.length'と' bytesRead'に同じ数を返します。決して '30'ではありません。ところで、あなたは 'buffer2'を割り当てるべきではありません。 ['OutputStream.write(buffer、start、length)'](http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html#write%28byte%5B%5D 、%20int、%20int%29)。 ストリームをコピーするのに[Apache IO utils](http://commons.apache.org/io/api-1.2/org/apache/commons/io/IOUtils.html#copy%28java.io.InputStream)を使用すると便利です。 、%20java.io.OutputStream%29) – Raffaele
こんにちは@アンドロイドドロイド、私も同じことを(メディアプレーヤーから音楽を録音する方法)を探しています。もしあなたがこのplzヘルプmee..thanksに事前にsugeestionを持っている。 。 – sandeep