加載過的字元串生成檔案:
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);
#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
顯示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;
}
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__)
tmp_func = lsk_func;
lsk_func = rsk_func;
rsk_func = tmp_func;
tmp_str = lsk_str;
lsk_str = rsk_str;
rsk_str = tmp_str;
#endif
}
待機界面設定日期和時間的坐标:
set_dt_display
{
#if defined(__NEOTEL_N73_SETTING__)
x=32;//設定時間坐标
y=1;
#endif
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;
x2 = x1 + main_LCD_dt_object.time.width - 1;
y2 = y1 + main_LCD_dt_object.time.height - 1;
enable_main_LCD_date_time_display = 1;
}
show_main_LCD_date_time
{
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
疑問:
#if defined(__NEOTEL_MATRIX_MENU_TEXT__)
gui_show_fixed_matrix_menuitem_text();
#endif
音樂播放器主界面:
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
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;
檔案預設排序設定:
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 "MAUI MMS User Agent"
修改聲音音量大小:
./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 "011"
#define NVRAM_EF_CACHE_SHORT_LID_VERNO "011"
#define NVRAM_EF_CACHE_DOUBLE_LID_VERNO "010"
鍵盤鎖時間修改:
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);
SetLine1Text(gNWProviderName);
SetLine2Text((U8*) gServProvderName);
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, ,表示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, "51011", 5)
卡2:memcmp(gHomePLMNNum_2, "51011", 5)
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_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