歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android錄音程序之寫入數據

Android錄音程序之寫入數據

日期:2017/3/1 9:54:12   编辑:Linux編程

網上一般給出的Android錄音程序例子中,寫入數據到文件核心代碼如下:

while (isRecord == true) {
readsize = audioRecord.read(audiodata, 0, bufferSizeInBytes);
if (AudioRecord.ERROR_INVALID_OPERATION != readsize && fos!=null) {
try {
fos.write(audiodata);
} catch (IOException e) {
e.printStackTrace();
}
}
}

這裡面有個明星的錯誤,就是每次read出來的數據,很可能不能把整個緩沖區audiodata充滿。

所以,read方法才返回一個int表示實際接收到的數據數。實際測試也證明了這一點。

因此,直接把audiodata寫入到文件,是完全錯誤的,導致寫入了很多錯誤數據。

正確的做法是:

while (isRecord == true) {
readsize = audioRecord.read(audiodata, 0, bufferSizeInBytes);
if (AudioRecord.ERROR_INVALID_OPERATION != readsize && fos!=null) {
try {
fos.write(audiodata,0, readsize); // 只從當前位置,寫入到實際讀到的字節數
} catch (IOException e) {
e.printStackTrace();
}
}
}

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved