歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android錄音程序之寫入數據

網上一般給出的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