你好,游客 登录 注册 搜索
背景:
阅读新闻

Android录音程序之写入数据 - KimmKing的技术博客

[日期:2013-03-31] 来源:  作者: [字体: ]

网上一般给出的例子中,写入数据到文件核心代码如下:

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();  
                }  
            }  
        }  








收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻