mtk开发可能用的到的东西
更新时间:2024-04-23 13:54:01 阅读量: 综合文库 文档下载
- mtk 开发推荐度:
- 相关推荐
MTK编程起步——开发中可能用到的一些东西
分类: mtk 开发 2011-02-27 10:15 935人阅读 评论(0) 收藏 举报 加载过的字符串生成文件: string_resource_usage.txt 加载过的图片生成文件: image_resource_usage.txt
SMS编辑界面,中间按键的显示:
mmi_sms_entry_editor
{
#ifdef __MMI_WGUI_CSK_ENABLE__
EnableCenterSoftkey(0, IMG_GLOBAL_SEND_MSG_CSK);
mmi_imc_disable_csk();
#endif }
EnableCenterSoftkey(0, 0);去掉其使用。
设置默认时间: custom_hw_default.c :
DEFAULT_HARDWARE_YEAR、DEFAULT_HARDWARE_MON、DEFAULT_HARDWARE_DAY
Restore.c 恢复出厂时间:RstResetDateTime()
上下左右快捷键设置: Resource_shortcuts.c:
数组:gShctCandList 可选的快捷方式入口
gShctDefaultList 默认有的入口
gShctDefaultDediList[4] 上下左右四个键的入口
camera、video 的一些默认值设置: MMI_features_camera.h、MMI_features_video.h (plutommi/customer/custresource/pluto_mmi)
UI_device_height UI_device_width MMI_button_bar_height
修改默认输入法: Common_mmi_cache_config.c:
NVRAM_SETTING_PREFER_INPUT_METHOD
RESTORE_PREFER_INPUT_METHOD
modis上看需修改版本号:NVRAM_EF_CACHE_SHORT_LID_VERNO
(custom_nvram_editor_data_item.h)
电话本的存储设置:
mmi_phb_entry_quick_search_list()
{
guiBuffer = GetCurrGuiBuffer(SCR_ID_PHB_QUICK_SEARCH_LIST);
/*NEOTEL:caiqin 20100818 add for phb display begin*/
#if !defined(__NEOTEL_N73_SETTING__)
entryCount = mmi_phb_num_of_phb_contact_in_storage(g_phb_cntx.prefer_storage);
#else
entryCount = mmi_phb_num_of_phb_contact_in_storage(MMI_STORAGE_BOTH);
#endif
SetLeftSoftkeyFunction(MTPNP_PFAL_PHB_entry_list_choose_number_dial, KEY_EVENT_UP);//左按
键
进入拨打的界面。
}
去掉idle界面,网络名字前面的SIM卡前面的图标:
wgui_cat033_show_techno_network_name() 和wgui_cat033_show_techno_network_name2()
的:
#if defined(M8171_SW_VERSION) || defined(M8968_SW_VERSION)||defined(M8289_SW_VERSION)
dual_sim_img = NULL;//赋值为空
#else
dual_sim_img = get_image(WGUI_IMG_IDLE_SIM1);
#endif
修改时间的默认格式为12小时制: #ifdef __NEOTEL__SETTING__
BYTE_ENTRY(TIME_FORMAT, 0X00),//12小时制
#else
BYTE_ENTRY(TIME_FORMAT, 0X01),//24小时制
#endif
#ifdef __NEOTEL__SETTING__
BYTE_ENTRY(RESTORE_DEFAULT_TIME_FORMAT, 0x00),
#else
BYTE_ENTRY(RESTORE_DEFAULT_TIME_FORMAT, 0x01),
#endif
修改IP号码的15位: #ifdef M8181_SW_S80_VERSION #define MAX_IP_NUMBER_LEN 15
#else
#define MAX_IP_NUMBER_LEN 10
#endif
文件nvram_common_defs.h: #ifdef M8181_SW_S80_VERSION #define NVRAM_IP_NUMBER_SIZE 32*3
#else
#define NVRAM_IP_NUMBER_SIZE 22*3
#endif
修改GPRS相关的文件:
#define MAX_GPRS_PROFILE_NUM (9)--custom_data_account.h
#define NVRAM_EF_ABM_GPRS_PROFILE_TOTAL 12
NVRAM_EF_ABM_PS_PROFILE_DEFAULT NVRAM_EF_ABM_PS_PROFILE_DEFAULT
NVRAM_EF_WAP_PROF_WAP_PROFILE_CONTENT_DEFAULT NVRAM_EF_WAP_PROF_WAP_SIM1_PROFILE_NAMES_DEFAULT NVRAM_EF_WAP_PROF_WAP_SIM2_PROFILE_NAMES_DEFAULT NVRAM_EF_WAP_PROF_MMS_SIM1_PROFILE_NAMES_DEFAULT NVRAM_EF_WAP_PROF_MMS_SIM2_PROFILE_NAMES_DEFAULT
MMI_features_video.h文件:
for video player:show text when hotkey pess
#ifndef __NEOTEL__SETTING__
#define __VDOREC_FEATURE_HIDE_OSD__ //屏蔽这两个宏 #define __VDOREC_FEATURE_MULTI_REGION_LAYER_BG__
#endif /* __NEOTEL__SETTING__ */
显示2个IMEI号:
#if defined(__MMI_DUAL_SIM_MASTER__) && defined(__NEOTEL_MULTI_LANGUAGE__) ||
defined(M8181_SW_S80_VERSION) mmi_ssc_get_sim2_imei_req();
#else
ShowIMEIScreen();
#endif
修改音乐播放器的歌曲标题坐标: mmi_audply_redraw_main_AP_title()
gui_print_truncated_borderd_text(、、, MMI_title_string);
允许主屏幕屏保时钟显示: show_main_LCD_date_time函数中: if (enable_main_LCD_date_time_display)
{
dm_coordinates coordinates;
if (show_date == 0)
{
coordinates.s16X = main_LCD_dt_object.date.x; coordinates.s16Y = main_LCD_dt_object.date.y; coordinates.s16Width = main_LCD_dt_object.date.width; coordinates.s16Height = main_LCD_dt_object.date.height;
setup_previous_control(&coordinates);
}
update_mainlcd_dt_display
多个含内嵌菜单的上下菜单选择按键响应函数:
register_inline_fixed_list_keys
{
register_keyboard_key_handler(inline_fixed_list_key_handler);
SetKeyHandler(inline_fixed_list_goto_previous_item, KEY_UP_ARROW, KEY_EVENT_DOWN); SetKeyHandler(inline_fixed_list_goto_next_item, KEY_DOWN_ARROW, KEY_EVENT_DOWN); SetKeyHandler(inline_fixed_list_goto_previous_item, KEY_VOL_UP, KEY_EVENT_DOWN); SetKeyHandler(inline_fixed_list_goto_next_item, KEY_VOL_DOWN, KEY_EVENT_DOWN);
}
内嵌菜单左右选择响应函数: register_inline_select_menu_keys
{
SetKeyHandler(inline_select_menu_previous_item, KEY_LEFT_ARROW, KEY_EVENT_DOWN); SetKeyHandler(inline_select_menu_next_item, KEY_RIGHT_ARROW, KEY_EVENT_DOWN); SetKeyHandler(inline_select_menu_handle_up_arrow, KEY_UP_ARROW, KEY_EVENT_DOWN);
SetKeyHandler(inline_select_menu_handle_down_arrow, KEY_DOWN_ARROW,
KEY_EVENT_DOWN);
SetKeyHandler(inline_select_menu_handle_up_arrow, KEY_VOL_UP, KEY_EVENT_DOWN); SetKeyHandler(inline_select_menu_handle_down_arrow, KEY_VOL_DOWN, KEY_EVENT_DOWN);
register_keyboard_key_handler(inline_select_menu_keyboard_key_handler);
}
按键响应函数: execute_softkey_function
隐藏按键:
wgui_softkey_hide(MMI_RIGHT_SOFTKEY);
重画按键: redraw_softkey
{
hide_softkey[key] (); show_softkey(key);
}
写短信模块按键响应:
SetLeftSoftkeyFunction(mmi_sms_entry_editor_options, KEY_EVENT_UP);
SetCenterSoftkeyFunction(mmi_sms_ed_send, KEY_EVENT_UP); SetCategory28RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
写短信模块添加联系人: mmi_sms_entry_add_recipient mmi_sms_recipient_enter_number_done
mmi_sms_phone_number_done
MMS字串:MEA_STR_ID_CONFIG
MMS模块的宏控制:MMS_SUPPORT = OBIGO_Q03C_MMS_V01
MMS模块的入口函数: goto_mms_screen() wap_entry_widget_screen
彩信列表菜单创建: widget_ctk_create_list_menu widget_ctk_screen_create widget_ctk_show_list_menu meaSignalReceive参数已经封装好
{
switch(src_module)
{
case MSF_MODID_SMA: smaSignalHandler(signal, p);
break;
case MSF_MODID_MSM: msfSignalHandler(signal, p);
break;
case MSF_MODID_MMS:
mmsSignalHandler(signal, p);
break;
case MSF_MODID_SLS: slsSignalHandler(signal, p);
break; }
/* draw the blank softkey if no softkey button */
show_softkey_background();
modis上: MMI_ON_WIN32
修改本机密码等: nvram_common_custpack.c:
COMMON_NVRAM_EF_MS_SECURITY_DEFAULT[]:
定义贪睡重复闹钟次数:
AlarmDef.h:
MAX_SNOOZE_CHANCES
gui_switch.h宏定义: 定义MMI窗体等的高度、宽度
GUI图片绘制:
gui.c
gui_show_image(S32 x, S32 y, PU8 i)
gui_measure_image(PU8 i, S32 *width, S32 *height)
gui_move_text_cursor(S32 x, S32 y)
gui_measure_string(UI_string_type text, S32 *width, S32 *height)
GDI图片绘制: gdi_image.c:
gdi_image_get_dimension_id(U16 image_id, S32 *width, S32 *height) gdi_image_draw_id(OFFSET_X,OFFSET_Y,IMAGE_ID):{gdi_image_draw}
gdi_image_draw:{gdi_image_codec_draw}
日历的相关定义:
Gui_calendar.h 日历的绘制: gui_calendar.c
设置idle界面,默认时钟:
wgui_datetime.c: U8 g_clock_type = ANALOG;
电池电量变化响应函数:
wgui_status_icon_refresh_fixed_status_icon
{
wgui_status_icon_arrange_status_icons()
{
MMI_status_icons_list1[0] = STATUS_ICON_SIGNAL_STRENGTH; MMI_status_icons_list1[1] = STATUS_ICON_BATTERY_STRENGTH;
#if defined(__DOUBLE_BATTERY__)
MMI_status_icons_list1[2] = STATUS_ICON_BATTERY_STRENGTH_SLAVE;
MMI_status_icon_bars[0].n_icons = 3; #if defined(__NEOTEL_N73_SETTING__)
MMI_status_icons_list1[3] = STATUS_ICON_SLAVE_SIGNAL_STRENGTH;
MMI_status_icon_bars[0].n_icons++;
#endif #else
MMI_status_icon_bars[0].n_icons = 2;
#endif } }
信号量图标和电池图标坐标设置: wgui_status_icon_arrange_status_icons
(arrange_status_icons)
进入idle界面的函数: wgui_cat033_redraw
{
if (PhnsetGetShowDateTimeStatus() == MMI_TRUE)
{
#if defined (__NEOTEL_NOKIA_IDLESCREEN_STYLE__)
gui_show_image(0, 0, get_image(idlescreen_bar_id));//idle界面去掉时钟图标
#else
gui_show_image(0, MMI_status_bar_height, get_image(idlescreen_bar_id));
#endif }
update_mainlcd_dt_display();
in_idle_screen(); wallpaper_layer =
wgui_cat033_get_text_abm_layer();wgui_status_icon_set_alpha_layer(wallpaper_layer);
idle_screen_show_network_details();
register_hide_status_icon_bar(0, idle_screen_hide_status_icons_bar0);
#if !defined(__MMI_MAINLCD_320X480__)
register_hide_status_icon_bar(1, idle_screen_hide_status_icons_bar1);
#endif
show_status_icons();
#if defined (__NEOTEL_NOKIA_IDLESCREEN_STYLE__)
show_nokia_idle_function();
#endif }
N73,idle设置左右按键:
设置左右按键: IdleSetLRKey()
{
#if defined(__NEOTEL_LSK_TO_SENDKEY2__)
if ((MTPNP_AD_Get_UsableSide() == MTPNP_AD_DUALSIM_USABLE) ||
(MTPNP_AD_Get_UsableSide() == MTPNP_AD_SIMCARD2_USABLE))//如果两个卡可用或者卡2可
用,就进入call_list界面
{
lsk_func = MTPNP_PFAL_chist_slave_req_read_mixed_num_by_key;
} else {
lsk_func = MMI_Display_Nosim_Message;//若无卡2则提示插入卡
} #else
lsk_func = EntryMainMenuFromIdleScreen;
#endif
rsk_func = mmi_phb_idle_enter_phb_list;//右软键进入电话簿列表
//更换左右按键的响应和字串
#if defined(__MMI_SWAP_LSK_RSK_IN_IDLE_SCREEN__)
/* Swap the LSK and RSK handler. */
tmp_func = lsk_func; lsk_func = rsk_func; rsk_func = tmp_func;
/* Swap the LSK and RSK string. */
tmp_str = lsk_str; lsk_str = rsk_str; rsk_str = tmp_str;
#endif /* __MMI_SWAP_LSK_RSK_IN_IDLE_SCREEN__ */
}
待机界面设置日期和时间的坐标:
set_dt_display
{
/*NEOTEL: zhangyan 20100815 add begin */ #if defined(__NEOTEL_N73_SETTING__)
x=32;//设置时间坐标
y=1; #endif
/*NEOTEL: zhangyan 20100815 add end */
x1 = main_LCD_dt_object.time.x = x - DT_DISPLAY_GAP; y1 = main_LCD_dt_object.time.y = y - DT_DISPLAY_GAP;
#if defined(__NEOTEL_N73_SETTING__)
x=50;//设置日期坐标
y=18; #endif
x1 = main_LCD_dt_object.date.x = x; y1 = main_LCD_dt_object.date.y = y; /*NEOTEL:caiqin 20100727 add for time begin*/ x2 = x1 + main_LCD_dt_object.time.width - 1; /*NEOTEL:caiqin 20100727 add for time end*/ y2 = y1 + main_LCD_dt_object.time.height - 1;
enable_main_LCD_date_time_display = 1;
}
show_main_LCD_date_time
{
/* get current time in string format */
time_string(&main_LCD_dt_object.time.t, (UI_string_type) s, main_LCD_dt_object.flags);
}
if (PhnsetGetShowDateTimeStatus() == MMI_TRUE)
{update_mainlcd_dt_display();}
时间显示的clip的地方增加格式判断:
PhnsetGetTimeFormat()。
动态列表:
wgui_dynamic_list_create_icontext_menu
电池充电过程中反复调用:
wgui_status_icon_status_icon_timer_callback()
{
if (status_icon_blink_animate_ON)
{
gui_start_timer(STATUS_ICON_TIMER_RATE, wgui_status_icon_status_icon_timer_callback);
} }
idle界面接收短信的提示框上面的字串绘制函数:
ShowCategory154Screen{
category_154_message1_y = CAT154_IMAGE_Y - h1 - 1 - h2 - 2 + 8;
category_154_message2_y = CAT154_IMAGE_Y - h2 - 2 + 8;
y = CAT154_IMAGE_Y;
}
接收短信的提示框图片SMS/Receiving/SS_IdleMSG.gif
设置屏保默认开启: SettingDefs.h :
#define FACTORY_RESTORE_DEFAULT_SCREENSAVER_STATUS 1
RESTORE_DEFAULT_SCREENSAVER_STATUS
NVRAM_SCREENSAVER_STATUS
设置屏保默认图片:
NVRAM_CURRENT_SCREENSVER_ID
RESTORE_DEFAULT_CURRENT_SCREENSVER_ID
二级菜单背景图
IMG_BACKGROUND_defaultTheme IMG_BACKGROUND_1Theme IMG_BACKGROUND_2Theme
主菜单图片坐标的绘制 gui_show_fixed_matrix_menu函数
#if defined(__NEOTEL_MATRIX_MENU_TEXT__) #if defined(__NEOTEL_LENOVO_MAINMENU__) if(GetActiveScreenId() == MAIN_MENU_SCREENID)
{
image_rect->rect_text.y = iy + mm->height-sh - 10;
} else #endif {
image_rect->rect_text.y = iy + mm->height-sh - 2;
} #else
image_rect->rect_text.y = iy + mm->text_y;
#endif 疑问:
/*NEOTEL: zhangyan 20100806 modify begin*/ #if defined(__NEOTEL_MATRIX_MENU_TEXT__)
gui_show_fixed_matrix_menuitem_text();
#endif
/*NEOTEL: zhangyan 20100806 modify end*/
音乐播放器主界面:
mmi_audply_redraw_main_screen
设置默认背光等级和时间值: Common_mmi_cache_config.c: NVRAM_BYTE_BL_SETTING_LEVEL NVRAM_BYTE_BL_SETTING_HFTIME
Restore.c恢复出厂设置值:
#define RESTORE_DEFAULT_BACKLIGHT_LEVEL 5 #define RESTORE_DEFAULT_BACKLIGHT_TIME 6
Nvram_common_config.c:反查电话号码(拨打的时候和姓名匹配) NVRAM_EF_SYS_CACHE_OCTET_DEFAULT 数组的最后一行
【有的项目在custom_nvram_restore.c 文件】 #elif defined(M8181_SW_S80_VERSION)
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* phb compare digit */
Custom_wap_cust_pack.c: 添加书签 custom_wap_bkm_struct wap_bkm_default Nvram_common_custpack.c: 添加书签
COMMON_NVRAM_EF_WAP_BOOKMARK_LIST_DEFAULT
idle界面:仿Nokia的shortcut快捷键
nokia_shortcuts_struct nokia_idle_shortcuts数组: { 1,IMG_NOKIA_IDLE_TEXTMENU_ICON_SMS,
STR_ID_NOKIA_NEW_MESSAGE, ViewSmsInboxFromNokiaIdleScreen},
nokia_shortcuts_struct{ BOOL is_set_or_not; U16 shortcut_icon; U16 shortcut_string; FuncPtr shortcut_function;
}
设置idle界面,默认时钟:
wgui_datetime.c:
U8 g_clock_type = ANALOG; /* default clock for Techno Idlescreen Bar */
文件默认排序设置: Common_mmi_cache_config.c: NVRAM_EF_FMGR_SORT_OPTION_LID
idle界面shortcut快捷键的坐标设置函数:
【
wgui_categories_idlescreen.c:
ShowNokiaIdleText():
if(r2lMMIFlag) //其它国语言,字串从右到左显示的标志
{
x1 = UI_device_width -1 - NOKIA_ROW_GAP - NOKIA_IDLE_MENU_TEXT_ICON_WIDTH;
y1 = text_y; //字串显示的坐标
} else {
x1 = NOKIA_ROW_GAP + NOKIA_IDLE_MENU_TEXT_ICON_WIDTH;
y1 = text_y;
} 滚动字串:
gui_create_scrolling_text(&nokia_scroll_text, x1, y1, width, h, (UI_string_type) nokia_menu_text, NokiaIdletxtscrolling_timer, nokia_scrolling_text_draw_background, text_selected_c, text_selected_c);
gui_show_scrolling_text(&nokia_scroll_text);
shortcut图标的坐标绘制:
if(r2lMMIFlag)
{
gui_show_image(UI_device_width - 16 - 1,y1 ,(PU8)get_image(shortcutIcon));
} else {
gui_show_image(2,y1 ,(PU8)get_image(shortcutIcon));
} 】
添加一个自定义的世界时间、地区: resource_world_clock_city.c: const TimeZoneStruct TimeZoneData[]:
在其中添加世界时间的一项(位置无要求,程序会根据时区重新排序的):
{时区,地名字串,地名字串缩写,地名字串,地名字串缩写,1} 其中时区可以上网查,比如北京为东8区 ,就为 +8 西区为负数
地名字串,地名字串缩写是自己添加字串资源
地图X坐标,地图Y坐标为找到我们实际用的地图背景,对应的地名 x,y坐标即可,
用windows自带的画图工具就可查出来,最后一个参数照填就行
修改默认城市:
mod_mmiPopulateWClockData :找到城市名称对应的字串id:STR_WCLOCK_CITYxxx,
STR_WCLOCK_CITYxxx 对应的序号在 TimeZoneData 里面可以查看到, STR_WCLOCK_CITY8 处于 数组的第N给位置,即序号为N-1(基于0 开始), common_mmi_cache_config.c:CURRENT_CITY,修改为对应的序号减 1 (十六进制)
修改默认蓝牙设定名称:
BTMMICm.c里面,修改 MMI_BT_DEF_HOST_BT_NAME[]的值
在pc上隐藏手机盘符,而只显示存储卡盘符: custom_usb_ms_init :中注释掉以下句子: USB_Ms_Register_DiskDriver(&USB_NOR_drv);
或者修改:
#define PARTITION_SECTORS 0 #define NOR_FAT_PARTITION_SECTORS 0
电话本条数:
PHB_SIM_ENTRY = 250 # Phonebook Entry Number in SIM: 100, 200 PHB_PHONE_ENTRY = 200 # Phonebook Entry Number in NVRAM: 100, 200 PHB_LN_ENTRY = 20 # Call log; Last Number Entry Number: 10, 20, 50
默认IP号码设置: nvram_common_config.c: NVRAM_IP_NUMBER_DEFAULT
情景模式默认值: nvram_common_config.c: NVRAM_PROFILES_DEFAULT[]
电子书默认设置: nvram_common_config.c:
NVRAM_EF_EBOOK_DEFAULT_VALUE
修改输入法的顺序:
IMERes.c:
mtk_gIMEModeArray[]修改此数组中的元素的顺序即可
设置显示本机号码的开启或关闭: Common_mmi_cache_config.c: NVRAM_SETTING_OWNER_NO
PhnsetGetShowOwnerNumStatus显示本机号码状态的函数:打开和关闭。
修改User Agent: Custom_wap_config.h:
#define WAP_CUSTOM_CFG_DEFAULT_MMS_UA_HEADER \
修改声音音量大小:
./custom/audio/../nvram_default_audio.c:
主要含有“_MED_”字段的要修改,而且含有“MIC”的字段最大指不能超过100,否则容易产生自激。
修改声音音质:
./custom/audio/../ audcoeff.c“DG_DAF”的值,最好不要超过“0x6000”。
Resource_audio.c文件:
mtk_resource_imelodys[]:来电铃声/闹铃Ring1—Ring10, mtk_resource_midis[]:来电铃声/闹铃MIDI1—MIDI15 mtk_resource_message_sounds[]:信息铃声Tone1—Tone10 mtk_resource_sounds[]:开关机/开关盖声Tone—Tone10
mtk_resource_ems_imelodys[]:EMS旋律Melody
mtk_resource_ems_sounds[]:EMS预设声音Predefined Sound
mtk_resource_mms_sounds[]:mms声音
版本号修改:
我们修改了nvram里面的一个默认设置的值,如果我们不修改对应的版本号的话,
在升级手机的时候就必须要format才可以正常读出我们新设置的值
#define NVRAM_EF_CACHE_BYTE_LID_VERNO \#define NVRAM_EF_CACHE_SHORT_LID_VERNO \#define NVRAM_EF_CACHE_DOUBLE_LID_VERNO \
键盘锁时间修改: Common_mmi_cache_config.c:
NVRAM_SETTING_AUTOKEYPADLOCK_TIME
修改默认输入法:
方法1:common_mmi_cache_config.c NVRAM_SETTING_PREFER_INPUT_METHOD
方法2:
Nv项默认值为0xff,然后nv项版本号升级 SetInputMethodFromNVRAM函数中修改 NVRAM_SETTING_PREFER_INPUT_METHOD
默认语言:
common_mmi_cache_config.c NVRAM_SETTING_LANG
音乐播放器默认音量设置: NVRAM_AUDPLY_VOLUME
FACTORY_RESTORE_DEFAULT_AUDPLY_VOLUME
默认java的网络参数配置:
BYTE_ENTRY(NVRAM_JAVA_SETTING_PROF_ID, 0x02) BYTE_ENTRY(NVRAM_JAVA_SETTING_PROF2_ID, 0x02)
默认wap 网络参数配置:
SHORT_ENTRY(NVRAM_WAP_PROF_ACTIVE_WAP_PROFILE_INDEX, 0x02, 0x02) SHORT_ENTRY(NVRAM_WAP_PROF_ACTIVE_MMS_PROFILE_INDEX, 0x02, 0x02)
cs01_mid :是来电铃声的数据 cs02_mid :是对应的关机铃声
custpack_audio.c中的custpack_audio对应情景模式中的15个和玄铃声
mtk_resource_message_sounds :短信铃声的修改 转化工具可以使用MTK提供的MCT和AudioResourceGen。
手机短信容量:
SMS_PHONE_ENTRY = 200 # SMS Entry Number in NVRAM: 200
SMS_TOTAL_ENTRY = 250 # SMS Entry Number in NVRAM and SIM: 250
来电话时,通过电话号码来搜索姓名:
PhoneBookStubsToOthers.c中的mmi_phb_call_get_data_for_call_mgnt函数
节电模式:
搜索__MMI_POWERSAVE_MODE_ENABLE__, 修改的文件有Gpio.c和Custom_equipment.h。
语音拨号:
在TAURUS_GSM.mak中打开DIGIT_TONE_SUPPORT,添加音乐资源文件。
修改一些开机默认设置: nvram_user_config.c
修改打电话时灯不灭的问题:
与__MMI_SLEEP_OUT_BACKLIGHT_ON__有关
修改闹钟在各种设置下都会震动的BUG:
修改AlarmFramework.c中的void AlmPlayAlarmTone(void)函数
来电时只显示姓名改成显示电话和姓名:
修改CallStructureManagement.c文件中的GetIncomingCallName函数
修改来电时搜索电话号码的长度:
修改PhoneBookSearch.c中的mmi_phb_util_convert_number_to_int函数,
修改PhoneBookTypes.h中关于INVALID_NUMBER的定义
背景透明:
UI_SUBMENU_OPACITY_LAYER1透明度
主题的使用:
Themecomponents.h相关
修改主菜单的主题背景: Themecomponents.h:
main_menu_bkg_filler_defaultTheme_1 main_menu_bkg_filler_defaultTheme_2 main_menu_bkg_filler_defaultTheme_3
上下侧键功能调换:
keypad_def.c里面DEVICE_KEY_VOL_DOWN和DEVICE_KEY_VOL_UP位置交换
在主屏幕日期显示的地方加星期显示:
wgui_datetime.c中的date_string函数,如果没有副屏,记得把 Res_Gui.c中的PopulateCommonCategoryResources中的#ifdef __MMI_SUBLCD__去掉,跟宏
DT_IDLE_NEWSCREEN有关。
墙纸大小限制:
Wallpaper.c中的IMG_SIZE_BOUNDARY
图片预览:
FileMgrUI.c中的fmgr_gui_get_file_info_callback函数
拍照文件大小限制:
med_global.h中的MAX_CAM_FILE_BUFFER_LEN
快捷键的宏:
__MMI_DEDICATED_KEY_SHORTCUTS__
注册方向键的函数: RegisterDedicatedKeyHandlers();
充电温度限制: chr_parameter.c
通话声音大小调节的按键: SetSideVolumeKeysForCM函数
拨打电话时,有些文字看不全: 修改ShowMOMTCallScreen函数
全屏编辑框:
__MMI_FULL_SCREEN_EDITOR__宏相关
手机播放不了IMY,MID格式的问题:
AUD_MELODY_BUFFER_LEN大小不能为0,而且这个大小将限制能打开的铃声的大小
修改充电图标更新问题,由于status区域刷新边界较小导致:
gui_title_oem.c:
函数为:gui_title_oem_show_background
在moids下播放音乐文件: /MoDIS/WIN32FS/DRIVE_E/My Music
短信正在发送中的函数: SmsAppSendMsg.c: mmi_sms_entry_sending
绘制世界时钟的地图和时区坐标的函数: wgui_categories.c:Cat231Redraw
进入图片浏览界面,绘制标题栏的背景图片的函数: gui_title_show_background = gui_title_oem_show_background;
gui_title_oem.c:
gui_title_oem_show_background(): gdi_image_draw_id(t->x , t->y, title_bg_id);
用于修改背景图片的坐标位置,让标题栏文字显示在背景的中位置: gdi_image_get_dimension_id(title_bg_id, &title_bg_width, &title_bg_height);
gdi_image_draw_id(t->x, t->y + MMI_title_y -(title_bg_height - MMI_title_height)/2, title_bg_id);
背景图片的ID: title_bg_id = IMAGE_VIEW_TITLEBAR_BG;
绘制音乐播放器界面标题Audio player的函数:
mmi_audply_redraw_main_AP_title():
坐标位置:
gui_print_truncated_borderd_text(x1, height_base+
((MMI_title_height - str_h)/2) , UI_device_width - 2, MMI_title_string);
去掉内置视频:
PhoneBookResDef.h 去掉字串的定义 Res_PhoneBook.c 去掉字串的加载 PhoneBookCallerGroups.c中,
注释掉下面一段: for (i = 0; i < 1; i++)
{
g_phb_cntx.video_name_list[++count] = (U8*) GetString((U16) (STR_ID_PHB_VIDEO_1 + i));
g_phb_cntx.video_id_list[count] = VDO_ID_PHB_MTCALL_1 + i;
g_phb_cntx.total_video_id++;
}
属性模板说明: const U8 category5[] =
{
5, // 这个代表组件的个数; DM_BASE_LAYER_START, // 开始层;
DM_SCR_BG, // 背景;
DM_BASE_CONTROL_SET1, //表示窗体的基本组成——状态栏、标题和软按键
DM_MULTILINE_INPUTBOX1, //多行输入框 DM_CATEGORY_CONTROLLED_AREA // 输入法的部分;
};
卡1/卡2是否可用:
E_MTPNP_AD_SIMCARD_USABLE_SIDE MTPNP_AD_Get_UsableSide(void)
网络运营商1的位置在:idle_screen_show_network_name中修改 网络运营商2的位置在:idle_screen_show_card2_network_name里修改 歌词等一些内容的位置在:idle_screen_show_network_details里修改
日期时间在:DrawDateTimeImage里修改
定义网络运营商的名字:
idleapp.c:
#define SetLine1Text SetIdleScreenNetworkName//运营商名字 #define SetLine2Text SetIdleScreenNetworkStatus//网络状态 SetLine1Text(gNWProviderName); /* Line 1 = PLMN */ SetLine1Text(gNWProviderName); /* Line 1 = PLMN */ SetLine2Text((U8*) gServProvderName); /* Line 2 = SPN */
SetLine2Text((U8*) gOwnerName);
mmi_netset_retrieve_opname_from_plmn(UpdatePlmn, gNWProviderName);
mmi_ucs2ncpy((PS8) gNWProviderName, (PS8)
GetString(STR_ID_NETSET_SEARCHIN_NW), MAX_LENGTH_DISPLAY_NAME - 1);
NetWorkAttachedIndication函数: strcpy((S8*) gPLMN, (S8*) local_data->plmn);
RefreshNwProviderName(gPLMN);
此处是通过plmn值来得到ref_list中的STR_PLMN_NAME_X的值,具体查找过程可以参考
mmi_netset_retrieve_opname_from_plmn具体代码,
现在问题的关键就是哪里又得到这个plmn值呢?在同个文件中向上搜索到NetWorkAttachedIndication函数开始的时候就得到 local_data,从而得到对应的plmn值。再搜索InitNetWorkBootUpEventsCallBack()函数里面的 SetProtocolEventHandler(NetWorkAttachedIndication, PRT_NW_ATTACH_IND);就是得
到网络标志的状态的地方,不过是通过l4给mmi发消息而已。然后我们应该很容易看到 InitNetWorkBootUpEventsCallBack函数也仅仅是在mmitask.c中的InitializeAll()中被调用。
idle界面注册按键处理函数:
IdleApp.c中的IdleScreenDigitHandler()函数,
加入的按键处理函数SetKeyHandler
信号指示图标:
图标ID 为 STATUS_ICON_SIGNAL_STRENGTH 位于MainLCD/IdleScreen/Statusicon/ssignal
文件 NetWorkFunctions.c
函数ChangeStatusIconLevel根据当前的信号值设置显示的图片帧数。
该图标在待机界面的坐标:
文件Wgui_status_icons.c---函数arrange_status_icons() MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].y = 0; MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].x=3;
打印字符串函数:UI_print_text
if (mmi_idle_exe_callback() == MMI_TRUE) 条件成立, 表示有未读短信或者未接来电. 其中, mmi_idle_exe_callback()函数有两个作用:
1) 判断;
2) 显示未读短信界面, 或者未接来电界面
开机默认按键不振动:
gpio_vibrator_once_when_key_press = 0;
播放开盖音效:
playRequestedTone(COVER_OPEN_TONE);
播放闹钟铃声:
playRequestedTone(ALARM_TONE);
播放开机搜网声:
playRequestedTone(CAMP_ON_TONE);
手机暗码:CustResDefPLUTO.h (plutommi/Customer/CustResource/PLUTO_MMI)
SSCStringHandle.h (plutommi/mmi/SSC/SSCInc)
判断卡有效(mmi_bootup_is_sim_valid()== MMI_TRUE)
用于判断SIM卡注册网络失败,即SIM卡无效卡的判断: if(mmi_bootup_is_nw_registration_ok() == MMI_FALSE)
判断网络无效不可用:
if (!mmi_bootup_is_network_service_available())
判断当前界面是idle界面: if (g_idle_context.IsOnIdleScreen)
PhoneBookOperateSingle.c
包括了查看条目;添加条目;编辑mtk电话本修改所涉及到的一些文件;
PhonebookMain.c
包括了初始化和重启;号码查找;at命令;主菜单;电话本列表菜单;公共用途。
PhoneBookOperateSingle.c
包括了查看条目;添加条目;编辑条目;删除条目;复制条目;移动条目;重复入口;文件系统中的图片。
PhoneBookOperateMass.c
包括了全部复制;全部删除;常用操作功能。
PhoneBookSearch.c
包括名称索引排序;通过名称搜索;快速搜索。
PhoneBookCallerGroup.c
包括号码群组数据设置;号码群组成员列表;建立内嵌选择列表;
PhoneBookExtraNumbers.c
包括用户号码;服务电话号码;紧急电话号码。
PhoneBookSettings.c
包括内存状态;首选存储;所选字段开启与关闭设置;我的名片设置。
PhoneBookStubsToOthers.c
包括打电话接口;短息接口;彩信接口;email接口;常用号码查找;常用功能转换。
修改通话界面,修改开机画面,修改ilde界面,title刷新背景,添加图片资源:
(1:修改通话界面:
RedrawMOMTCallScreen();通话界面显示正在通话!
wgui_categories_CM.c
(2:修改开机画面,一般开机画面先调取一张静态图片,再调取一张动态图片;但modis里 面只会
显示一张动态图片!
(3:title刷新背景问题:
gui_title_oem_show_background();当各个界面之间跳转时,对于无背景的图片只 刷新title背
景: gui_title_oem.c
(4:添加图片修改MP3界面和FM界面,修改确定和退出特效!
AudioPlayer界面: IMAGE中添加图片资源; AudioPlayerResDef.h添加ID; Res_AudioPlayer.c定义添加资源ID; AudioPlayerMainScreen.c中修改 mmi_audply_redraw_LSK_down, mmi_audply_redraw_RSK_down, mmi_audply_redraw_LSK_up,
mmi_audply_redraw_RSK_up,用来修改按下和弹起效果! mmi_audply_redraw_main_screen用来修改触摸界面的效果!
FM界面:
IMAGE中添加图片资源; FMRadioDef.h添加ID; Res_FMRadio.c定义添加资源ID; FMRadioMainScreen.c中修改 mmi_fmrdo_redraw_main_LSK_down, mmi_fmrdo_redraw_main_RSK_down, mmi_fmrdo_redraw_main_LSK_up,
mmi_fmrdo_redraw_main_RSK_up,用来修改按下和弹起效果!
mmi_fmrdo_redraw_main_all用来修改触摸界面的效果!
(5:修改ilde界面的歌词和FM电台的显示效果
wgui_categories_idlescreen.c中audply_idle_text_scroll_timer()和
idle_screen_show_network_details()
其中gui_redraw_scrolling_text()用来显示滚动字符!
系统默认铃声资源主要在: resource_audio.c,custpack_audio.c 中
如需修改可以利用项目中的工具AudioResGen.exe(tools/AudioResGen) 首先将铃声文件的绝对路径加到imy.txt(tools/AudioResGen),如:
D:/work/audio_resource_gen/MTK/imy/s1imy01.imy D:/work/audio_resource_gen/MTK/imy/s1imy02.imy 然后运行AudioResGen.exe,会生成三个文件: custpack_audio.c,resource_audio.c,resource_audio.h
里面有生成的资源数组文件,将其加入到系统的资源文件custpack_audio.c,resource_audio.c即可。
为何有的时钟闹铃不是准时的: MMI supports two kinds of timers.
1. Alignment timers : These timers are not very accurate. But they
keep on running even when the backlight of the LCD isturned off. All the applications use these timers.
2. Non-Alignment timers : These timers are very accurate. They do not run
when the backlight is turned off. All the UIcomponents use Non Alignment timers.
#define TIMER_IS_ALIGNMENT 0 //Aligned timer #define TIMER_IS_NO_ALIGNMENT 1 //Non-aligned timer
情景模式
1、NOR 对应Normal 2、HED headset 3、HND handfree
每种情景下有多种item 1、CTN ---Call Tone 2、KEY ----Keypad Tone
3、TVO ----TV out 4、MIC ----MICrophone 5、GMI ----FM ,BUZ, buzzer
6、SPH ----Speech Tone 7、MED ----melody 8、SID ----Side Tone
测试和实验室会联合给出一个表。按照此表对应设置即可
颜色配置:
短信阅读界面信息头背景颜色:EMS_viewer_header_background_filler 颜色选择绘制:show_highlighted_inline_color_select_menuitem()
状态栏背景颜色:status_icon_bar_filler_defaultTheme 单行编辑器光标颜色:inline_edit_cursor_color_defaultTheme 单行编辑高亮背景颜色:inline_edit_focussed_filler_defaultTheme
多行编辑界面行分隔线颜色:gui_create_EMS_input_box()--->b->underline_color
编辑区域字体颜色:inputbox_normal_text_color_defaultTheme 编辑界面选字区域:1>箭头 mmi_pen_editor_draw_arrow()
2>选字区域背景颜色,选中背景等 candidate_singleline_inputbox_theme 编辑界面虚拟键盘按中键背景颜色:virtual_keyboard_key_down_filler_defaultTheme
popup屏幕背景颜色:popup_screen_background_color_defaultTheme popup屏幕字体颜色:popup_screen_border_color_defaultTheme
滚动条颜色:scrollbar_background_filler_defaultTheme 滚动条滑块颜色: scrollbar_indicator_filler_defaultTheme list菜单项高亮背景颜色:list_selected_item_filler_defaultTheme 日历当前日期背景颜色:calendar_cell_current_DefaultTheme
校准界面字体颜色:UpdateCalibrationScreen()--->MMI_multiline_inputbox.normal_text_color 开机请等候界面字体颜色: ShowCategory9Screen()--->MMI_multiline_inputbox.normal_text_color
开机找网界面日期时间字体颜色: set_dt_display--->case DT_NETWORK_SEARCH 电子书字体颜色:ShowCategory75Screen()--->MMI_multiline_inputbox.normal_text_color
编辑区域默认背景颜色:inputbox_filler_defaultTheme(如插入USB)
待机界面时间的设置: set_dt_display()
main_LCD_dt_object.time.font = &MMI_large_font;
main_LCD_dt_object.time.text_color = *current_MMI_theme->idle_scr_time_color;
main_LCD_dt_object.time.text_border_color = *current_MMI_theme->idle_scr_time_border_color;
main_LCD_dt_object.time.width = w + (DT_DISPLAY_GAP << 1); main_LCD_dt_object.time.height = h + (DT_DISPLAY_GAP << 1);
x1 = main_LCD_dt_object.time.x = x - DT_DISPLAY_GAP; y1 = main_LCD_dt_object.time.y = y - DT_DISPLAY_GAP;
x2 = x1 + main_LCD_dt_object.time.width - 1; y2 = y1 + main_LCD_dt_object.time.height - 1;
如何手动修改imei?
1. meta 工具
2. 连接好下载线,点击meta工具的reconnect ,按手机开机键; 3. 选择nvram editor ;选择手机软件对应database文件;
4、选择 NVRAM_EF_IMEI_IMEISV_LID 5 、选择1 2 读取 即可得到imei号
6、点击imei号,可以修改号码;保存,即可修改imei号。
7、×#06# 查看显示imei号。
23c中有NVRAM_EF_IMEI_IMEISV_DEFAULT
默认IMEI号: nvram_common_config.c: NVRAM_EF_IMEI_IMEISV_DEFAULT
0x53, 0x68, 0x88, 0x00, 0x00, 0x00, 0x51, 0x08, /*The IMEI is 15 digit */,表示IMEI号
3586880000001580
不是飞行模式判断:
if (mmi_bootup_get_active_flight_mode() == 0)
或if (mmi_bootup_get_active_flight_mode() != FLIGHTMODE_SILENT)
飞行模式判断:
if (mmi_bootup_get_active_flight_mode() == FLIGHTMODE_SILENT)
判断不插卡的情况,包括插卡后取出和开机前就没有插卡两种情况,所以在判断语句中应该是:
if(!gInsertSimAppFlag ||
( MTPNP_AD_Get_Card1Status() == MMI_SIM_STATUS_NOT_INSERT && MTPNP_AD_Get_Card2Status() == MMI_SIM_STATUS_NOT_INSERT))
或者是:
if(!gInsertSimAppFlag ||
MTPNP_AD_Get_Card1Status() == MTPNP_AD_SIMCARD_ABSENT && MTPNP_AD_Get_Card2Status() == MTPNP_AD_SIMCARD_ABSENT)
)
值得注意的是:要将引用的外部应用的变量和函数所在的头文件包含进去否则报错。
短信功能无法使用:
if (mmi_frm_sms_check_action_pending())
禁用切断电源报警的功能:
AlmDisableSPOF();
判断网络ID
卡1:memcmp(gHomePLMNNum, \卡2:memcmp(gHomePLMNNum_2, \
gPLMN 手机卡1当前接入网络的网络ID gPLMN_2 手机卡2当前接入网络的网络ID
编辑短信的时候button bar中间按键显示的图片: 菜单ID :IMG_GLOBAL_SEND_MSG_CSK #ifdef __MMI_WGUI_CSK_ENABLE__
EnableCenterSoftkey(0, IMG_GLOBAL_SEND_MSG_CSK);
mmi_imc_disable_csk();
#endif /* __MMI_WGUI_CSK_ENABLE__ */
菜单隐藏:
mmi_frm_hide_menu_item(MENU_ID_UCM_CALL_SETTING);
菜单取消隐藏:
mmi_frm_unhide_menu_item(MENU_ID_UCM_CALL_SETTING);
注意:
如果用mmi_frm_hide_menu_item()隐藏了一个菜单, 那么只要调用了这个函数, 以后所有界面都不会显示该菜单, 除非在显示之前调用mmi_frm_unhide_menu_item().
开关机动画, USB动画, 开机logo: Active/Poweronoff
主菜单: MainMenu 子菜单: Submenu 主题(主菜单背景): Theme 墙纸: /MainLCD/IdleScreen/Wallpaper
锁屏图片: /MainLCD/IdleScreen/IPHONEKYEPADLOCK
wap登陆: /MainLCD/UIElement/Progress 短信菜单小图片: MainLCD/DualSIM/MESSAGE
录音: MainLCD/SoundRecorder 幻灯片: MainLCD/PhotoEditor 图片编辑器: MainLCD/PhotoEditor 游戏: MainLCD/Submenu/Funandgame
状态栏短信已满: /MainLCD/IdleScreen/Statusicons/DualSIM/Callforward/Master
状态栏彩信图标: /MainLCD/IdleScreen/Statusicons/DualSIM/MMS/Master 状态栏的信号图标: /MainLCD/IdleScreen/Statusicons/DualSIM/Master //sim卡1
和: /MainLCD/IdleScreen/Statusicons/DualSIM/Slave //sim卡2
文件管理中, 菜单前面的图片: /MainLCD/FileManager
状态栏彩信图标: /MainLCD/IdleScreen/Statusicons/DualSIM/MMS/Master 状态栏的信号图标: /MainLCD/IdleScreen/Statusicons/DualSIM/Master //sim卡1
和: /MainLCD/IdleScreen/Statusicons/DualSIM/Slave //sim卡2
文件管理中, 菜单前面的图片: /MainLCD/FileManager
正在阅读:
mtk开发可能用的到的东西04-23
三年级上册美术教案16.我来当导演03-18
2015年安徽省直事业单位省测绘局招聘资格复审公告03-18
【世纪金榜】2016届高三文科数学总复习专项强化训练(二)三角函数与平面向量的综合应用07-28
讽刺与幽默作文500字07-08
蓝天白云作文500字07-14
07水电水文学试卷A(免费)05-21
2016-2022年中国煤化工装备市场前景展望及投资战略研究报告(目04-20
照片上的妈妈作文450字06-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 东西
- 可能
- 开发
- mtk
- 人口与城市地理学试卷(后附答案)
- JAVA练习题
- 加氢车间首次开工方案
- yii2框架使用嵌套集合实现无限极商品分类
- 统计课后答案
- 电大期末考试网络实用技术基础复习资料总核 - 图文
- 济南市系统集成商名录2018版717家 - 图文
- 《集成电路设计基础1-5》复习题2006
- 突发事件自救互救课后习题
- 第六章(97)--不完全竞争
- VWJ型振弦式裂缝计
- 环境监测考试试题10套
- 燃气输配设计说明书
- 2017 牛津译林英语 7B 语法专题一 基数词和序数词
- 2012—2013学年度上学期高三一轮复习地理单元验收试题(13)
- 2013级大学物理(I)A卷
- 公共经济学全部ppt内容
- 中国工程项目中心网 服务内容
- 航空公司代码
- 中国塑料瓶盖行业市场前景分析预测报告(目录) - 图文