MTK--接口
MTK--去掉触摸屏校验
去掉触摸屏校验先找到SimDetection.c文件中的CallBackPowerOnAnimationComplete函数中的#ifndef?#ifndef__MTK_TARGET__?if(PhnsetNeedFactoryDefaultCalibration()&&!AUTO_POWER)?#else?if(PhnsetNeedFactoryDefaultCalibration())?#endif
将判断条件改为
?#ifndef__MTK_TARGET__?if(0)?#else?if(0)?#endif
即可实现
--------------------------------------------------
MTK--mp3调声音大小
如果想增大音量直接调用:
?mmi_audply_press_inc_volume这个接口。
如果想减小音量直接调用:
?mmi_audply_press_inc_volume这个接口
------------------------------------------------
MTK--电池告警
当电量低于一定的电压时便会产生电池告警:
在LowBatteryCommonAction这个函数中,会弹出一个BatteryIndicationPopup(STR_LOW_BATTERY);
低电量的屏
------------------------------------------------
MTK---系统重启
调用RstStartRestore函数
------------------------------------------------
MTK--重启手机
调用ex_reboot,或者断言可以重启机器
------------------------------------------------
MTK--audioplay
音频播放器主要有:播放,下一首,上一首,暂停,停止几个按钮。
它们的接口如下:
mmi_audply_press_play_button_down();mmi_audply_press_play_button_up();
mmi_audply_press_next_button_down();mmi_audply_press_next_button_up();
mmi_audply_press_prev_button_down();mmi_audply_press_prev_button_up();
mmi_audply_press_play_button_down();mmi_audply_press_play_button_up();
mmi_audply_press_stop_button_down();mmi_audply_press_stop_button_up();
播放和暂停是同一个按钮,当第一次按的时候是播放,再次按下就是暂停,主要控制g_audply.state的
状态。
-----------------------------------------------
MTK----获取系统当前时间
定义一个保存当前时间的结构体:
typedefstruct{?U8hour;?U8min;?U8sec;?U8month;?U8day;?U8local;?U16year;}Btl_Log_Time;
MYTIMEinit_time;
调用获取当前时间的函数:
GetDateTime(&init_time);
curr_time.year=init_time.nYear;curr_time.month=init_time.nMonth;curr_time.day=init_time.nDay;curr_time.hour=init_time.nHour;curr_time.min=init_time.nMin;curr_time.sec=init_time.nSec;
------------------------------------------------
MTK--添加中文字库
添加简体中文字库说明
1.?替换中文字库
?将L_1_DiallingFont.h,L_1_Pluto_Large.h,L_1_Pluto_Medium.h,L_1_Pluto_Small.h,L_1_SubLCDFont.h
?L_Pluto_ch_GB2312.h,L_virtual_keyboard_font.h替换到//vendor\font\MTK\project\plutommi\content\inc\MainLcd176X220
?目录下;
?将FontRes.c替换到//vendor\font\MTK\project\plutommi\content\src\MainLcd176X220目录下;
?将FontRes.c替换到//plutommi\Customer\CustResource目录下。
2.?打开编译开关
?(注:这段代码在MMI_featuresPLUTO.h这个文件的744行左右)
?在MMI_featuresPLUTO.h文件中找到如下代码:
?#ifdefDEMO_PROJECT
#if!defined(ARIMA27_BB)
?//#define__MMI_LANG_TR_CHINESE__
#endif
?//#define__MMI_LANG_SM_CHINESE__
#endif
在这段代码之前填加一条语句:
#define__MMI_LANG_SM_CHINESE__
如下面代码所示:
#define__MMI_LANG_SM_CHINESE__
#ifdefDEMO_PROJECT
#if!defined(ARIMA27_BB)
?//#define__MMI_LANG_TR_CHINESE__
#endif
?//#define__MMI_LANG_SM_CHINESE__
#endif
这样便可打开编译简体中文字库的编译开关。
重新编译即可。
--------------------------------------------
MTK----短信计数的接口
短信计数的接口:
InitSMSCounter(void);
InitNvramSMSCounters()
{
?S16error;
?ReadValue(NVRAM_SMSCOUNTERS_SENT_SHORT,&chis_p->nSendSMSCount,DS_SHORT,&error);?if(chis_p->nSendSMSCount==0xffff)?{?chis_p->nSendSMSCount=0;?}
??ReadValue(NVRAM_SMSCOUNTERS_RECD_SHORT,&chis_p->nRecvSMSCount,DS_SHORT,&error);??if(chis_p->nRecvSMSCount==0xffff)?{?chis_p->nRecvSMSCount=0;?}
?return;
}
------------------------------------------------
MTK--非易失性内存数据服务
配置指南
?要配置数据项,添加或删除一个数据项,或者仅修改某个缺省值,参看以下五个步骤:
1〉?在nvram_user_defs.h文件里,定义一个新的逻辑数据项的LID至nvram_LID_cust_enum枚举。
2〉?在nvram_user_defs.h文件里,定义两个常量:SIZE和TOTAL。
Linear-fixed:total>1;size为每一条记录的大小
Transparent:total=1;size为每一个数据项实体的大小
注意:由于Flash设备驱动的约束,size定义必须为偶数对齐。
3〉?在nvram_user_config.c文件里,定义该新逻辑数据项的缺省值。
注意缺省值的size必须等于第二步中定义的size大小。
4〉?定义该新逻辑数据项的属性至logical_data_item_table_cust
定义新数据项和其属性,logical_data_item_table_cust数据结构由NVRAM数据服务内部管理。必须定义的数据结构域:
1〉?LID
2〉?Size
3〉?Total
4〉?Defaultvalue:
如果该值为NULL,缺省值为所有字节置0xFF.
如果该值为NVRAM_EF_ZERO_DEFAULT,缺省值为所有字节置0x00.
5〉?Attributes:
可以为单个数据项赋予多个属性,使用|操作。
6〉?OtherfieldsNVRAM数据服务保留;不要修改它们。
5〉?在nvram_user_config.c文件里修改版本号CODED_DATA_VERSION
每次数据项配置修改,必须修改版本号。数据版本不限于指定的字符,但是长度必须为7bytes.
2约束
1.数据项的Size定义必须为偶数对齐,最大为65535。
2.Linearfixed数据项的最大记录数为65535.
?以上的最大值为理论值,可能会因为超出Flash空间而不能正常工作,依赖于Flash设备驱动配置。此外,一部分空间是为协议栈使用,用户可配置的数据项是受限制的。
?当前,测试的安全值如下:
1.?Size最大480
2.?Total最大300
3.?用户可配置的数据项最大值25
3.2FieldsinPrimitives原语中的域
1.当发送read/write请求原语至NVRAM任务,如果数据项为transparent,’para’域必须为1;
2.当发送write请求原语至NVRAM任务,被写入的数据的大小size必须等于在nvram_user_config.c中定义的数据项的大小size.
3.read/write确认原语成功返回值‘result’域为:NVRAM_ERRNO_OK,NVRAM_ERRNO_INIT.
----------------------------------------------------------------
MTK----获取IMSI
获取IMSI的代码实现部分:
仅供参考:
?voidbtl_send_msg_get_imsi(void){?MYQUEUEMessage;??SetProtocolEventHandler(btl_sim_imsi_rsp,PRT_GET_IMSI_RSP);?Message.oslSrcId=MOD_MMI;?Message.oslDestId=MOD_L4C;?Message.oslMsgId=PRT_GET_IMSI_REQ;?Message.oslDataPtr=NULL;?Message.oslPeerBuffPtr=NULL;?OslMsgSendExtQueue(&Message);?kal_prompt_trace(MOD_MMI,"btl_send_msg_get_imsi");}
voidbtl_sim_imsi_rsp(voidinfo){?mmi_smu_get_imsi_rsp_structlocal_data=(mmi_smu_get_imsi_rsp_struct)info;?kal_prompt_trace(MOD_MMI,"btl_sim_imsi_rsp1");?memcpy(imsi_imei_num,(char)local_data->imsi,17);?kal_prompt_trace(MOD_MMI,"btl_sim_imsi_rsp2");}
--------------------------------------------------------
MTK----获取IMEI
代码实现部分:
仅供参考:
voidbtl_send_msg_get_imei(void){?MYQUEUEMessage;?kal_prompt_trace(MOD_MMI,"btl_sim_send_get_imei");?//ClearInputEventHandler(MMI_DEVICE_ALL);?SetProtocolEventHandler(btl_sim_imei_rsp,MSG_ID_MMI_NW_GET_IMEI_RSP);?Message.oslMsgId=MSG_ID_MMI_NW_GET_IMEI_REQ;?Message.oslDataPtr=NULL;?Message.oslPeerBuffPtr=NULL;?Message.oslSrcId=MOD_MMI;?Message.oslDestId=MOD_L4C;?OslMsgSendExtQueue(&Message);//msg_send_ext_queue?SetProtocolEventHandler(btl_sim_imei_rsp,MSG_ID_MMI_NW_GET_IMEI_RSP);?kal_prompt_trace(MOD_MMI,"btl_send_msg_get_imei");}
voidbtl_sim_imei_rsp(voidinfo){?mmi_nw_get_imei_rsp_structimei=(mmi_nw_get_imei_rsp_struct)info;?strcat(imsi_imei_num,"");?strcat(imsi_imei_num,(char)imei->imei);?kal_prompt_trace(MOD_MMI,"btl_sim_imei_rsp");}
-------------------------------------------------------
MTK----改变CAMERACAPTURE的路径
实现代码:
?staticvoidmmi_camera_get_next_filename(PS8file_buf_p){#ifdef__BTL_MOD__?MYTIMEtime;?charfilename[128];
?GetDateTime(&time);??if(g_btl_log_ctx.camera_snap.warn_num==0)?{?kal_wsprintf((WCHAR)file_buf_p,"D:\\Photos\\Usual_pic\\IMG%d%02d%02d%02d%02d%02d.jpg",?time.nYear,time.nMonth,time.nDay,time.nHour,time.nMin,time.nSec);?pfnUnicodeStrcpy((S8)g_btl_log_ctx.get_usual_name.name,(S8)file_buf_p);?}?else?{?kal_wsprintf((WCHAR)file_buf_p,"D:\\Photos\\Warn_pic\\IMG%d%02d%02d%02d%02d%02d.jpg",?time.nYear,time.nMonth,time.nDay,time.nHour,time.nMin,time.nSec);?pfnUnicodeStrcpy((S8)g_btl_log_ctx.get_warning_name.name,(S8)file_buf_p);?}??pfnUnicodeStrcpy((S8)g_btl_log_ctx.get_usual_name.name,(S8)file_buf_p);?dt_ucs2_to_ascii((WCHAR)file_buf_p,(WCHAR)filename);?kal_prompt_trace(MOD_MMI,"get_next_filename:?%s",filename);?#else?S8buffer[25];?S8UCS2_buffer[50];?S8UCS2_testname[50];?S8UCS2_alpha[10];?S16error=0;?U16filename_seq_no;?U16alpha_count;?U16alpha_index;?FS_HANDLEfile_handle;?U16file_check=0;??ReadValue(NVRAM_CAM_FILENAME_SEQ_NO,&filename_seq_no,DS_SHORT,&error);?if(filename_seq_no==0xffff)?{?filename_seq_no=1;??}?else?{?filename_seq_no++;?if(filename_seq_no>9999)?{?filename_seq_no=1;?}?}
?alpha_count=''Z''-''A''+1;?alpha_index=0;
?sprintf((PS8)buffer,"IMG%04d",filename_seq_no);?AnsiiToUnicodeString((PS8)UCS2_buffer,(PS8)buffer);
?while(1)?{?sprintf((PS8)buffer,"%c",''A''+alpha_index);?AnsiiToUnicodeString((PS8)UCS2_alpha,(PS8)buffer);
?UCS2Strcpy(UCS2_testname,UCS2_buffer);?UCS2Strcat(UCS2_testname,UCS2_alpha);?UCS2Strcat(UCS2_testname,(PS8)L".jpg");
?UCS2Strcpy((PS8)file_buf_p,(PS8)g_camera_cntx.storage_filepath);?UCS2Strcat((PS8)file_buf_p,(PS8)UCS2_testname);
?file_handle=FS_Open((U16)file_buf_p,FS_READ_ONLY);
?if(file_handle>=0)?{??FS_Close(file_handle);?alpha_index++;?}?else?{??WriteValue(NVRAM_CAM_FILENAME_SEQ_NO,&filename_seq_no,DS_SHORT,&error);?return;?}
??if(alpha_index>=alpha_count)?{?alpha_count=''Z''-''A''+1;?alpha_index=0;?filename_seq_no++;?file_check++;?if(filename_seq_no>9999)?{?filename_seq_no=1;?}?sprintf((PS8)buffer,"IMG%04d",filename_seq_no);?AnsiiToUnicodeString((PS8)UCS2_buffer,(PS8)buffer);
??if(file_check>=9999)?return;?}?}#endif}
|
|