MTK 手機開發小技巧(2)

   聲明:本資料爲公司同事整理提供

 

MMICheckDiskDisplay            開機點亮背光

 

PEN_CHECK_BOUND              檢查觸筆位置是否在控制區域

wgui_general_pen_down_hdlr   觸屏事件

 

setup_dialing_keypad  撥號界面

gui_dialing_key_select  顯示選中撥號圖片

ExecuteDialKeyPadKeyHandler

gui_dialing_screen_translate_pen_position

gui_dialing_screen_translate_pen_event

GetDispNameorNum   撥號取得姓名、號碼

mmi_ucm_entry_outgoing_call

dialer_input_box_change_callback  撥號界面顯示 

gui_dialing_screen_translate_pen_event   撥號觸屏事件

 

ShowMOMTCallScreen                來去電 來電 去電

RedrawMOMTCallScreen

 

gui_virtual_keyboard_cache_and_show_selected_key  虛擬鍵盤選中顯示

 

UI_inputbox_show_cursor 輸入框 光標 顯示

 

mmi_frm_is_screen_width_height_swapped  屏是不是旋轉90°

 

g_idle_context.ToMainMenuScrFromIdleApp = 1;

IdleHandlePoundKeyForKeypadLock  鎖鍵盤

HandlePoundKeyForUnlock

 

   #ifdef __SLT_MMI_D800_MAIN_MENU_STYLE__ //20080506 add

   if (GetActiveScreenId() != MAIN_MENU_SCREENID)

  extern kal_bool Is_On_MainMenu_Screen();

  D800_MainMenu_Title_Height

mmi_idle_is_on_idle_screen

 

FrameworkBackwardCompatible.c

FrameworkBackwardCompatible.h        字符轉換函數

mmi_chset_convert(g_chset_text_encoding, MMI_CHSET_UCS2, (char*)ascii_path, (char*)dest, sizeof(dest)-10);

 

證券之星 stock 測試帳號 13917580633    123456

 

 

__DRV_DUAL_SIM_INVERSE__ 雙卡互換

MTPNP_AD_Get_Startup_Mode  雙卡的啓動設置

mmi_bootup_sim1_is_insert 檢查sim1有沒有插入

 

PowerAndEndKeyHandler  end鍵函數

setup_bottom_shortcuts  觸摸屏下面的四個圖標

 

mmi_frm_hide_menu_item/mmi_frm_unhide_menu_item  隱藏/顯示菜單

 

gui_create_single_line_input_box_use_buffer               虛擬鍵盤、輸入 有關

mmi_pen_editor_compute_candidate_input_box_height 

gPenEditorCandidateInputBox

mmi_pen_editor_show_candidate_area

 

show_asyncdynamic_list 行事曆顯示

  

#if 1        //20080506 add

ShowCategory14Screen

#ifdef __SLT_MMI_D800_MAIN_MENU_STYLE__ //20080506 add

__SLT_MMI_D800_UI_STYLE__

                gMainMenuTitleIcon[i] = NULL;

#else

    gMainMenuTitleIcon[i] = MAIN_MENU_TITLE_ICON_BASE + list_of_icons[i] - MAIN_MENU_ICON_IMGBASE;

#endif

dm_reset_title_coordinates

 

MMI_MAINMENU_CONTENT_Y

MMI_MAINMENU_CONTENT_HEIGHT

 

    /* height of status icon bar */

CFG_UI_STATUS_BAR_HEIGHT

    /* height of thin title */

CFG_UI_THIN_TITLE_HEIGHT

 

CFG_UI_MAIN_MENU_NORMAL_IMAGE_CLIP_HEIGHT        //

CFG_UI_MAIN_MENU_HIGHLIGHTED_IMAGE_HEIGHT        //主菜單顯示高度

dm_setup_and_draw_matrix_menu

 

CFG_UI_MENUITEM_HEIGHT

CFG_UI_SOFTKEY_HEIGHT

CFG_UI_BUTTON_BAR_HEIGHT

 

show_softkey_background_with_clipping                //button 背景

gui_show_icontext_button  //button字體

show_status_icons        //icon 背景

redraw_softkey

 

 

gui_title_oem_show_normal

gui_title_oem_show_background        //title背景       

gui_title_show_text                  //title字體

gui_shortcut_show                    //title右上方顯示的數字index

wgui_title_set_no_icon_shct(MMI_TRUE)  //title右上方顯示的數字index       

 

gui_show_vertical_scrollbar_style_4                //scroll bar

MMI_fixed_list_menu.vbar

gui_scrollbar_draw_button

 

gui_clock_show                        //時鐘顯示

 

IMG_BACKGROUND_defaultTheme                //二級菜單背景圖

 

FlightModeCheckBeforeAnimation //開機

 

gui_fixed_matrix_menu_auto_calculate

 

CFG_UI_MAINMENU_SHOW_STATUS_ICON  顯示/隱藏主菜單的status

 

current_MMI_theme 當前主題

 

gui_show_fixed_matrix_menu    圖片大小不正確時死機

        MMI_ASSERT((xPos2 - xPos + 1) * (yPos2 - yPos + 1) * gdi_layer_get_bit_per_pixel() >> 3 <=

                   MMI_MAIN_MENU_MATRIX_HIGHLIGHTED_BUF_SIZE);

 

mmi_audply_redraw_main_screen 音樂播放器主界面

mmi_audply_redraw_main_play_list 刷新音樂歌詞列表

EMS_matrix_highlight_handler  預設動畫列表

gui_show_fixed_matrix_menu

 

EarphoneDisplayPopup  耳機插入/拔出   GpioDetectInd

 

 

MMI_ON_WIN32  MMI_ON_HARDWARE_P

__MTK_TARGET__

       

#ifdef  __cplusplus

extern "C" {

#endif

       

__SMS_BLACK_LIST__ 短信防火牆

SLT_MMI_SLIDE_UNLOCK  滑動解鎖

__MMI_VCARD__  名片夾

__SLT_MMI_PHB_VCARD__  超級電話本

__MMI_VIP__   SECURITY_VIP   vip功能

__SLT_LONG_DISTANCE_DDD__  長途區號

 

__MMI_UI_HINTS_IN_MENUITEM__  在菜單空間顯示hint(正常應該關閉,彈出hint

 

Execution Region  //查看Ram 空間 (在lis文件中搜索該關鍵字)

 

//手機默認密碼

NVRAM_SECURITY_VIP_PASSWORD_LID

NVRAM_EF_MS_SECURITY_DEFAULT     對應升級項:NVRAM_EF_MS_SECURITY_LID_VERNO                     

 

mmi_frm_sms_save_sms_req 發短信 

mmi_msg_new_msg_ind 新短信到達   

mmi_msg_entry_new_msg_ind

ReleaseEMSEditBuffer  釋放寫短信的buffer

 

SCR_INLINE_EDIT 編輯電話本界面

SCR_ADD_NEW_ENTRY 增加電話本界面

 

color_dialing_font_map[] 撥號界面的不同字體顏色數組

gui_show_dialer_input_box_ext 撥號輸入框

wgui_setup_dialer_inputbox

   IdleDialPadCall

mmi_ucm_entry_outgoing_call

ShowMOMTCallScreen

                

nvram_cust_pack.c存放開關機默認值

custom_mmi_default_value.h        存放開關機默認值定義

 

fmgr_msdc_plug_in_hdlr

fmgr_msdc_plug_out_hdlr  插拔T

 

mmi_vobj_is_pending_object  收到名片夾

mmi_vobj_receive_get_full_tmp_path_name  取得名片夾路徑

 

isEarphonePlugged        //耳機是否插入標誌

 

        gPenEditorSelectCandidate,  漢王判斷有無備選字

        s_bShowingCand  國筆判斷有無備選字

        handle_category28_input  

 

手機信號的顯示是根據公式

frame_number = (level_percentage * (n_frames)) / 100;

來計算需要顯示哪一針圖片,瞭解原理後大家可以對gSignalStrengthLevel靈活付值.

void ChangeStatusIconLevel(S16 icon_ID, U8 level_percentage)

 

        mmi_phb_sel_quick_search_get_index //電話本選擇複製、刪除時中鍵顯示的勾和叉圖

 

setup_bottom_shortcuts  觸屏底部絲印的快捷鍵

 

custom_comp_config_tbl  自己配製的任務列表

 

resource_shortcuts.c  gShctDefaultDediList  快捷鍵定義

mmi_audply_redraw_lyric 顯示歌詞   idle_screen_show_network_details 待機顯示歌名

 

nvram_common_config.c        // 恢復出廠設置的定義以及  自動測試的程序

(增加或刪除工程模式中測試項目 數組 NVRAM_EF_AUTOTEST_DEFAULT[NVRAM_EF_AUTOTEST_SIZE])

nvram_user_config.c                //存放nvram的各項默認值

 

nvram_restore_byte_cache        //恢復出廠設置的byte

 

wgui_categories_inputsenum.h //輸入法的定義

custom_hw_default.c //電池參數

audcoeff.c nvram_default_audio.c                        //音頻參數

 

FactoryModeDef.h                        //工程模式、測試模式的定義

FactoryModeSrc.c 存放工程模式的各項設置 其中const testlet Tests[MAX_AUTO_TEST_ITEMS] = {}存放*#87#自動測試時的各項測試 函數

                        MAX_AUTO_TEST_ITEMS 自動測試項目的最大值

                       

nvram_common_config.c                        NVRAM_EF_PORT_SETTING_DEFAULT []        //設置默認調試端口

 

nvram_cust_pack.c                NVRAM_CACHE_DOUBLE_DEFAULT                //觸摸屏校準數據

custom_wap_cust_pack.c         //書籤,主頁

                       

audio_group_init[NUM_OF_GROUP]        鈴聲設置數組

 

initalize_main_menu_application()註冊主菜單得各個高亮函數

 

GlobalConstants.h                        //存放按鍵定義

keypad_def.c                                        //按鍵映射關係

 

CustImgDataHW.h                                //編譯後的圖片數據數組  __MAINLCD__路徑+__文件名+__擴展名[]

 

CustCoordinates.c                        //Screen控件

 

MMI_features_GUIPLUTO.h  __MMI_BI_DEGREE_MAIN_MENU_STYLE__  //主菜單樣式  __MMI_MAINMENU_TYPE__

 

NVRAM_EF_SMSAL_SMS_TOTAL //短消息最大值(nvram_user_defs.h        

CM_SMS_MAX_MSG_NUM customer_ps_inc.h          //要比NVRAM_EF_SMSAL_SMS_TOTAL值大(100

PHB_PHONE_ENTRY                .make                //手機電話簿容量

PHB_SIM_ENTRY                                           //sim卡電話簿容量

 

nvram_user_defs.h 文件中 NVRAM_EF_SMSAL_SMS_TOTAL 手機短信的容量定義  CM_SMS_MAX_MSG_NUM 短信總容量定義(sim + phone

.mak 文件中PHB_PHONE_ENTRY 定義手機中電話本的容量 PHB_SIM_ENTRY定義sim卡的電話本容量

MAX_BT_SMS_NUM                        藍牙短信容量

 

mmi_phb_quick_search_find_entry 電話本輸入字符搜索列表

refresh_search_list_change_list   字符搜索列表回調函數

 

 

PhoneSetupResList.h //牆紙定義、數量

IMERes.c            //定義筆畫輸入法(MTK源代碼 __MMI_TOUCH_SCREEN__和筆畫 INPUT_MODE_MMI_SM_STROKE 互斥)

 

NVRAM_PROFILES_DEFAULT   //情景模式裏面的設置,鈴聲等的默認值

MMI_PROFILE_ENUM_TYPE  情景模式

IdleToggleProfile  激活情景模式

 

CustResDefPLUTO.h         //定義資源路徑  工程菜單定義 如:*#86#   *#65289*#

 

DEFAULT_HARDWARE_YEAR                DEFAULT_HARDWARE_MON  DEFAULT_HARDWARE_DAY//手機默認年、月、日

 

GUITypeDef.h                                HIGHLIGHT_EFFECT    SOFTKEY_STYLE   STATUSBAR_STYLE  //定義高亮菜單的效果、按鈕和statusbar的顯示風格

 

pixtel_UI_show_fixed_matrix_menu //九宮格數據

 

//沒有小電池,第一次正常關機開機時時間不能保存

kal_bool DRV_POWERON(void)  :: if (RTC_isFisrtOn()/*||(KAL_FALSE==RTC_is_config_valid())*/)//modify by lvqiang for rtc bug11832

 

S8* path;                //字符轉換函數, ASCII 轉換成 UCS2  如例:

mmi_chset_convert(g_chset_text_encoding, MMI_CHSET_UCS2, (char*)MUSIC_FOLDER, (char*)path, FMGR_MAX_PATH_LEN-10);

mmi_ucs2cat((PS8)filexpr_temp, (const PS8)path);

//創建中文文件夾

#define PHB_VCARD_FOLDER    "/x0D/x54/x47/x72/x39/x59/x00/x00//"  // 名片夾 

 

 

#ifdef __cplusplus                //20070613 add for simulator

extern "C" {

#endif /* __cplusplus */

 

NVRAM_EF_PHB_COMPARE_DIGIT_DEFAULT                電話本比較的位數

 

MTK平臺的UA內置方法:

custom_wap_config.h文件裏頭的

#define WAP_CUSTOM_CFG_DEFAULT_UA_HEADER  "MAUI WAP Browser"

#define WAP_CUSTOM_CFG_DEFAULT_MMS_UA_HEADER "MAUI MMS User Agent"

這兩項引號中的紅體字部分內容替換爲我們提供的有效UA

"LCT_D800B_01/1.0 Nucleus/1.13.21 MTK6225/07A Release/5.1.2008 Browser/TelecaQ03C1 Profile/MIDP-2.0 Configuration/CLDC-1.1"

 

電池顯示六格的問題:

  3520000, 3570000, 3680000, 3780000,

  3890000, 3950000, 4000000, 4090000,                        9999999,

#define NVRAM_EF_CUST_HW_LEVEL_TBL_SIZE     444

#define BATTERY_MAX_LEVEL 11

 

gui_fixed_menuitems.c

        (pixtel_UI_show_fixed_fullscreen_page_menuitem())

gui_fixed_menus.c        (g_MainMenu_Item_Poistion 數組存放9宮格的座標值)

        show_fixed_list調用下面函數

        (pixtel_UI_show_fixed_list_menu()調用DrawMainMenuBgImageContext()畫選中位置的圖片)

       

CustMenuRes.c         const CUSTOM_MENU                nCustMenus[]所有屏幕畫面的參數 菜單ID 父菜單ID 子菜單個數 等等,結構描述如下:

//The Below is the structure of the MenuItem which can be transfered to any screen.

typedef struct Custom_MenuItem

{

        U16 nMenuItemId; //Unique Id for each MenuItem.

        U16 nParentId;  //ItemId of the parent if 0(zero) then no parent.

        U16 nNumofMenuItem; //Number of Children it has.

        U16 nHideFlag; //This is a flag to mask/hide.(not sure currently)

        U16 nMovable; //This is a flag for moving like 0-NotMovable Anywhere,

                                                                //1-Movable within the same parent..etc

 

        U16 nDispAttribute; //This is a display attribute flag like 1-list,2-Circular,3-Tab..etc.

        U16 nStrId; //Unique StringId of the MenuItem.

        U16 nImageId; //Unique Image of the MenuItem.

        U16 *nOrderMenuItemId; //ItemId of the children in Sequence

}CUSTOM_MENU;

 

目錄結構:        plutommi

Alarm                 鬧鐘

AsyncEvents        異步事件和硬件協議事件的處理

Audio                聲音管理

Calendar        日曆

CallManagement        電話呼叫

Calls                輔助服務

CommonScreens        所有應用的公用屏幕

Data Time        日期和時間的實現

Debug                包含.obj文件並且是正在工作的文件夾

DebugLevel        管理debug日誌的MACROS

Demo                一個demo應用

Framework        管理應用消息,流程控制和操作系統封裝

                EventHandling               

                FileSystem

                History

                NVRAMManager

                Osl

                Tasks

FunandGames        FunandGames的應用

GPIO                處理不同的外部設備例如:背光,震動,led

GUI                管理UI的相關函數

IdleDemo        待機應用和事例

Inc                所有應用的共享文件

MiscFramework        Pixtel MMI平臺管理字體unicode的支持。

Organizer       

PhoneBook        電話簿

Profiles       

SAT                sim卡應用的工具箱

Settings        設置應用

Shortcuts        快捷應用

ToDoList       

 

pixtelmmi.cpp

MtkWinMainStart()函數開始application--------(TaskInit.c)InitApplication()

                                                                                                                             create/init trace機制,task隊列,信號,線程等

(MMITask.c)MMI_task()

 while(1)

 讀消息從循環隊列中讀消息,成功的情況下讀task隊列,根據隊列id號生成一個task.同時調用該task.

        POWER_ON_KEYPAD:

        InitializeAll()(初始framework):(InitUnicodeSupport()

                                                                                                                                  gdi_init()

InitMMIUsbContext()(如果支持usb)                                        

mmi_irda_init_cntx()        //如果支持紅外的話                                                                                    mmi_irda_set_recv_files_cnt()                                                //                                               InitProtocolEvents()                                                                                                          initFramework()                                                       

InitHardwareEvents()

InitTime()                                                //                                                                      InitMMI_App()

PopulateResData()                                //通用資源數據

InitNvramData()                                        //初始化的數據

 

EntryCalibrationSettingScr

mmi_bootup_exit_disk_check

mmi_pwron_entry_animation_screen()                //開機動畫                                                                 FlightModeCheckBeforeAnimation //開機顯示動畫   

                                     

Res_MainMenu.c                PopulateMainMenuRes()  增加主菜單!

PopulateRes.c                PopulateMainMenuRes()

RegisterHighlightHandler()        註冊高亮顯示

////////////////////////////////////////////////////////////////////////////////////////////

mainmenu.c

        goto_main_menu()

                RegisterHighlightHandler(main_menu_custom_highlight_handler);//判斷是否播放聲音

                ShowCategory14Screen()        //顯示主菜單(wgui_categories_MM.c)

                        case PAGE_MENU:

                                register_fixed_list_highlight_handler(category14_main_menu_list_highlight_handler);

                (category14_main_menu_list_highlight_handler)

                        DrawMainMenuBgImageContext()畫選中位置的圖片

                       

        LCD_CLAM_OPEN_HALFLITE_TO_OFF_TIME 背光半黯時間

 

 

pixtel_UI_measure_image()        //獲取被給圖象的寬高!

/mmi/setting/風格設置保存在nvram,initphonesetupcntx()時讀取.

 

gui_fixed_menus.c

        定義mainmenu_item_position

 

GlobalConstants.h 定義

 

///////////////////////////////////////////////////////////////////////////////////////////////

mmitask while循環內接收消息ProcessPCKeyEvent()----Osl/KeyBrd.c

        處理ProcessKeyEvent(),發送按鍵事件到mmitask

                調用ExecuteCurrKeyHandler() 根據消息找到對應的按鍵-----Events/Events.c

        left_softkey_up()----執行當前按鍵對應的處理函數--left_softkey_functions[KEY_EVENT_UP]()

                (通過SetLeftSoftkeyFunction()設置的按鍵和函數對應關係)找到需要處理的對應函數

-----wgui_softkey.c

get_softkey_function   //取得按鍵函數

 

custom_nvram_editor_data_item.h                私有標識

CustResDefYJG_M100_01.h                        快捷鍵

////////////////////////////////////////////////////////////////////////////////////////////////

custom

        audio

                項目目錄

                        resource_audio.h(聲音資源定義)

                        resource_audio.c(聲音資源內容)

 

Setting

說明:系統初始化時初始化sethighlitehandler函數,使菜單id和對應highlite函數相綁定,相對應。

        當進入該菜單時,例如Setting菜單: EntryScrSettingMenu() 註冊對應的執行highlight的函數。

然後刷新屏幕

        MainMenu.c(hightlight_mainmenu_settings())進入。

        hightlight_mainmenu_settings是從initalize_main_menu_application函數SetHiliteHandler

 

EntryPhnsetScrSvr

        EntryPhnsetScrSvrSettings

                EntryPhnsetScrSvrSystem

                        EntryPhnsetScrSvrSysView

        EntryPhnsetScrSvrSelect

                EntryPhnsetScrSvrDwnl

                        EntryPhnsetScrSvrDwnlView

 

initialize_gui

        set_MMI_theme((MMI_theme *)MMI_themes[0]);        //初始化theme

 

wgui_EMS_input_information_background()----wgui_ems_categories.c

                                -------UI_fill_rectangle()        ----wingui.c

 

gui_themes.c  set_mmi_theme(t)-----current_mmi_theme=t    設置整體風格

 

wgui.c  initialize_gui()  初始化設置整體風格

 

void custom_drv_init(void)

{

。。。

//add for sim_change

        {        //sim卡互換代碼

                extern void sim_switchPhysicalSlotMapping(kal_bool);    //添加部分

                sim_switchPhysicalSlotMapping(KAL_TRUE);                       //添加部分

        }

}

 

 

音頻格式

mp3 5

mid: 17

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章