目标,将camera的预览帧根据自定义条件进行dump,因此我们需要先创建一个文件 path/name,path必须存在,如果不存在则会
open()失败,另外项目中sdcard/路径下,怎么都open fail,包括关闭seLinux,然后转移路径到data目录下,最终成功,另外在使用sprintf函数进行格式化文件名时,出现一个问题是,定义的char* var必须要先进行分配内存,或者定义为字符数组,否则会出现,将格式化字符串写入NULL地址的指针,段错误 (核心已转储)。
代码如下:
bool dump_Bmp_Img(MUInt8* addr, MUInt32 size, MUInt32 width, MUInt32 height, MChar * preFilename)
{
char fileName[64] = {0};
int fd;
XLOGI("+");
sprintf(fileName, "/data/misc/picdump/%s_%dx%d.yuv", preFilename, width, height);
fd = open(fileName, O_WRONLY |O_CREAT,0777);
if (fd < 0) {
ALOGE("fail to open file to save img: %s ,fd = %d", fileName,fd);
return false;
}
int len = write(fd,addr, size);
close(fd);
XLOGI("-");
return true;
}