void writepcmtofile(const char * fname,const void* buffer, size_t bytes)
{
static FILE *fp=NULL;
if(fp==NULL || access( fname, F_OK )==-1){
fp = fopen(fname, "ab+" );
if(fp==NULL){
ALOGI("can't open file!");
fp=NULL;
return;
}
}
if(fp!=NULL){
fwrite(buffer , 1 , bytes , fp );
ALOGI("write to file %d bytes",bytes);
}
}
注意,File设置为static的目的是为了更快,但是两个地方同时使用这个函数的时候,因为File只有一个,就会有问题。所以应该改成非静态的。
Android录音,播放,dump数据位置:
ssize_t AudioFlinger::PlaybackThread::threadLoop_write() {
... ...
ssize_t framesWritten = mNormalSink->write(
(char *) mSinkBuffer + offset, count);
writepcmtofile("/data/test/play.pcm",(int8_t *)inShort, lengthIn * 2);
}
bool AudioFlinger::RecordThread::threadLoop() {
if (mPipeSource != 0) {
......
}
// otherwise use the HAL / AudioStreamIn directly
} else {
ssize_t

这篇博客讨论了在Android中如何将数据dump到文件,特别提到了文件操作的静态与非静态区别,以及在遇到写入权限问题时如何解决,如通过设置seLinux权限或改写文件路径到/user/data。
最低0.47元/天 解锁文章
846

被折叠的 条评论
为什么被折叠?



