我做了一个壁纸的应用程序,就是把应用程序里面的图片保存到本地文件夹里面。我写完后再模拟器上运行正常,但是把它移植到真机上就保存失败?这是为什么?

shc8marry 2011-07-29 10:22:27

void SetName(belle *pMe){
char time[50];
char temGroup[10];
char temGroup1[10];
char temGroup2[10];
char temGroup3[10];
char temGroup4[10];
char temGroup5[10];
JulianType rJulianDate;
GETJULIANDATE(0, &rJulianDate);
DBGPRINTF("wYear=%d,wMonth=%d,wDay=%d,wHour=%d,wMinute=%d,wSecond=%d\n",rJulianDate.wYear,rJulianDate.wMonth,rJulianDate.wDay,rJulianDate.wHour,rJulianDate.wMinute,rJulianDate.wSecond);
SPRINTF((char*)temGroup, "%d", rJulianDate.wYear);
SPRINTF((char*)temGroup1, "%d", rJulianDate.wMonth);
SPRINTF((char*)temGroup2, "%d", rJulianDate.wDay);
SPRINTF((char*)temGroup3, "%d", rJulianDate.wHour);
SPRINTF((char*)temGroup4, "%d", rJulianDate.wMinute);
SPRINTF((char*)temGroup5, "%d", rJulianDate.wSecond);
DBGPRINTF("%s-%s-%s-%s:%s:%s",temGroup,temGroup1,temGroup2,temGroup3,temGroup4,temGroup5);
MEMSET(time,0,sizeof(time));
STRCAT((char*)time,temGroup);
STRCAT((char*)time,temGroup1);
STRCAT((char*)time,temGroup2);
STRCAT((char*)time,temGroup3);
STRCAT((char*)time,temGroup4);
STRCAT((char*)time,temGroup5);
DBGPRINTF("=================%s",time);
MEMSET(pMe->savefilename,0,sizeof(pMe->savefilename));

STRCAT(pMe->savefilename,"fs:/mod/10888/");
STRCAT(pMe->savefilename,time);
STRCAT(pMe->savefilename,".jpg");
}

void ReadFile(belle *pMe,const char *myfile,const char *savefile)
{
int count;
AEEFileInfo pInfo;
AECHAR sh[20] ={'l','i','n','g'};
AECHAR ss[20] ={'s','s','s','s'};
pMe->pMyFile = IFILEMGR_OpenFile(pMe->pMyFileMgr,myfile,_OFM_READ);

if(pMe->pMyFile==NULL){
DBGPRINTF("ENTER pMe->pMyFile11 = NULL\n");
return;
}

IFILE_GetInfo(pMe->pMyFile,&pInfo);//读取文件大小
DBGPRINTF("pMe->pInfo->dwSize=%d\n",pInfo.dwSize);

pMe->mydata=(char *)MALLOC(pInfo.dwSize);//分配动态内存
if(pMe->mydata==NULL){
DBGPRINTF("mydata FAKL\n");
}
IFILE_Read(pMe->pMyFile,(void *)pMe->mydata,pInfo.dwSize);


IFILE_Release(pMe->pMyFile);
pMe->pMyFile = IFILEMGR_OpenFile(pMe->pMyFileMgr,savefile,_OFM_READWRITE);
if(pMe->pMyFile==NULL){
//pMe->pMyFile = IFILEMGR_OpenFile(pMe->pMyFileMgr,"fs:/mod/10888/myfile.jpg",_OFM_CREATE);
pMe->pMyFile = IFILEMGR_OpenFile(pMe->pMyFileMgr,savefile,_OFM_CREATE);

if(pMe->pMyFile ==NULL){
IDISPLAY_DrawText(pMe->a.m_pIDisplay,AEE_FONT_NORMAL,ss,-1,20,60,NULL,IDF_ALIGN_CENTER);
return;
}

}
count = IFILE_Write(pMe->pMyFile,(void *)pMe->mydata,pInfo.dwSize);
if(0 == count)
{
IDISPLAY_DrawText(pMe->a.m_pIDisplay,AEE_FONT_NORMAL,sh,-1,20,20,NULL,IDF_ALIGN_CENTER);
}
IFILE_Release(pMe->pMyFile);

FREE(pMe->mydata);
}






这是那个写文件的函数和设置文件的名字。

在模拟器上运行完全正常,但是到了手机上保存图片就找不到了。

这里我还做了再手机上的测试输出创建文件失败或者写入失败会在屏幕上打印出来字母,但是在机器上测试都没有打印出来。说明创建成功了,但是我在AppLoader里面找不到。这是为什么? 是不是需要设置什么?
...全文
1852 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shc8marry 2011-08-01
  • 打赏
  • 举报
回复
请专家在回答下啊,实在没办法了
shc8marry 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 strayedbird 的回复:]
1. 首先修改输出目录"fs:/shared/",验证一下你的程序是否在手机上运行正确。
2. 试一试在mif文件中的dependencies中选择MCF_PICTURE 和MCF_PICTURE_LOCK添加到右边
3. 还不行就换一型号手机试一试
[/Quote]


输出目录是在哪里改?是不是在程序里面改"fs:/mod/10888/"改成"fs:/shared/"。

“mif文件中的dependencies中选择MCF_PICTURE 和MCF_PICTURE_LOCK添加到右边”

这里的MCF_PICTURE和MCF_PICTURE_LOCK在哪个头文件里面啊?
我怎么找不到啊......
shc8marry 2011-08-01
  • 打赏
  • 举报
回复
不好意思,我找到错误在哪里了!
我读取文件(图片)时从根目录下读取的,没有从BAR文件里面读取,我打包程序的时候在机器上测试只放进去了MOD文件和BAR文件。ReadFile(pMe,"fs:/~/startphoto2.jpg",pMe->savefilename);我没有在APP的根目录下放入图片文件,读取的时候读取失败自然就保存失败。 嘿嘿,自己大意了。


谢谢 strayedbird 为我解答。让我对MIF编辑器有了进一步的认识。
strayedbird 2011-08-01
  • 打赏
  • 举报
回复
"fs:/shared/"正确。
mif dependencies 中左下角"..."按钮可以选择目录,正确的目录是BREW SDK include目录。
shc8marry 2011-07-29
  • 打赏
  • 举报
回复
我修改了目录把"fs:/mod/10888/",改成了"fs:/~0x0102382c/"。我测试了下在模拟器上运行点保存后会在MIF文件的同级目录中创建一个10888的文件夹,并且成功保存文件。但是移植到了手机上就不行了。这是为什么? 请求高手帮我分析下一般什么情况会保存失败?


急等中..........
strayedbird 2011-07-29
  • 打赏
  • 举报
回复
目录不能使用"fs:/mod/10888/",应该用 "fs:/~0x0102382c/"或者用其宏
AEEFS_MCF_PICTURE_DIR,这是brew文件访问安全所有求的。
如果你想写AEEFS_MCF_PICTURE_LOCK_DIR目录,还要在MIF文件中dependency中加相应项。
进一步参见AEEMCF.h
strayedbird 2011-07-29
  • 打赏
  • 举报
回复
1. 首先修改输出目录"fs:/shared/",验证一下你的程序是否在手机上运行正确。
2. 试一试在mif文件中的dependencies中选择MCF_PICTURE 和MCF_PICTURE_LOCK添加到右边
3. 还不行就换一型号手机试一试
shc8marry 2011-07-29
  • 打赏
  • 举报
回复
有没有可能,我读取文件失败导致保存到本地失败?

ReadFile(pMe,"fs:/~/startphoto2.jpg",pMe->savefilename);

我要读取的文件就放在程序的目录中,谁帮我看看文件读取时候的 文件路径正确不"fs:/~/startphoto2.jpg"。

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧