MTK--接口

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----获取系统当前时间

定义一个保存当前时间的结构体:

typedef struct{
 U8 hour;
 U8 min;
 U8 sec;
 U8 month;
 U8 day;
 U8 local;
 U16 year;
}Btl_Log_Time;

MYTIME init_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文件中找到如下代码:

 #ifdef DEMO_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__

#ifdef DEMO_PROJECT

#if !defined(ARIMA27_BB)

 //#define __MMI_LANG_TR_CHINESE__

#endif

 //#define __MMI_LANG_SM_CHINESE__

#endif

这样便可打开编译简体中文字库的编译开关。

重新编译即可。

--------------------------------------------

MTK----短信计数的接口

短信计数的接口:

InitSMSCounter(void);

InitNvramSMSCounters()

{

 S16 error;

 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〉 Default value:

如果该值为NULL,缺省值为所有字节置0xFF.

如果该值为NVRAM_EF_ZERO_DEFAULT, 缺省值为所有字节置0x00.

5〉 Attributes:

可以为单个数据项赋予多个属性,使用 | 操作。

6〉 Other fields NVRAM 数据服务保留;不要修改它们。

5〉 在 nvram_user_config.c 文件里修改版本号 CODED_DATA_VERSION

每次数据项配置修改,必须修改版本号。数据版本不限于指定的字符,但是长度必须为7 bytes.

2 约束

1.数据项的Size 定义必须为偶数对齐,最大为 65535。

2.Linear fixed 数据项的最大记录数为 65535.

 以上的最大值为理论值,可能会因为超出Flash空间而不能正常工作,依赖于Flash设备驱动配置。此外,一部分空间是为协议栈使用,用户可配置的数据项是受限制的。

 当前,测试的安全值如下:

1. Size 最大 480

2. Total 最大300

3. 用户可配置的数据项最大值 25

3.2 Fields in Primitives 原语中的域

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的代码实现部分:

仅供参考:

 void btl_send_msg_get_imsi(void)
{
 MYQUEUE Message; 
 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");
}

void btl_sim_imsi_rsp(void *info)
{
 mmi_smu_get_imsi_rsp_struct *local_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

代码实现部分:

仅供参考:

void btl_send_msg_get_imei(void)
{
 MYQUEUE Message;
 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");
}

void btl_sim_imei_rsp(void *info)
{
 mmi_nw_get_imei_rsp_struct *imei= (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----改变CAMERA CAPTURE 的路径

实现代码:

 static void mmi_camera_get_next_filename(PS8 file_buf_p)
{
#ifdef __BTL_MOD__
 MYTIME time;
 char filename[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
 S8 buffer[25];
 S8 UCS2_buffer[50];
 S8 UCS2_testname[50];
 S8 UCS2_alpha[10];
 S16 error = 0;
 U16 filename_seq_no;
 U16 alpha_count;
 U16 alpha_index;
 FS_HANDLE file_handle;
 U16 file_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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值