我正在使用android內置媒體播放器通過網址播放音樂的項目。我想實現這一目標的是能夠將流數據保存在SD卡上的文件中。我試圖用媒體錄像機中的android build來做到這一點,但它記錄了手機的所有內容,不僅是來自媒體播放器的聲音。Android如何從媒體播放器錄製音樂
所以我的問題是哪個是最好的方法來實現這個?
這裏是我已經測試了一個例子,但我不能播放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作爲buffer2的長度,我不能理解爲什麼。
感謝您的幫助!
什麼是輸入和輸出格式? – Raffaele 2012-03-07 16:42:54
我總是得到'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)。 用於複製流的BTW,您可以方便地使用[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 2012-03-07 17:55:05
嗨@ android-droid,我也在尋找相同的東西(如何記錄音樂從媒體播放器)。如果你有任何關於這個plz幫助mee ..先謝了。 – sandeep 2013-02-28 09:52:36