微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > MTK 小技巧 源代码

MTK 小技巧 源代码

时间:10-02 整理:3721RD 点击:

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

php?mod=tag&id=6090" target="_blank" class="relatedlink">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 = NULL;

#else

    gMainMenuTitleIcon = MAIN_MENU_TITLE_ICON_BASE + list_of_icons - 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 MT6225.html" target="_blank" class="relatedlink">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



修改默认输入法
方法1:
common_mmi_cache_config.c
NVRAM_SETTING_PREFER_INPUT_METHOD 默认值
延伸:
common_mmi_cache_byte
默认语言:NVRAM_SETTING_LANG
默认城市:CURRENT_CITY
默认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),   
方法2:
Nv项默认值为0xff,然后nv项版本号升级
SetInputMethodFromNVRAM函数中修改
NVRAM_SETTING_PREFER_INPUT_METHOD

修改蓝牙名称
BTMMICM.c
MMI_BT_DEF_HOST_BT_NAME= { 'M', 'T', 'K', 'B', 'T', 'D', 'E', 'V', 'I', 'C', 'E', '\0' };
NVRAM_EF_BT_INFO_LID
#define NVRAM_EF_BT_INFO_LID_VERNO                      "011" //modify
(mmi_bth_init—> mmi_bth_init_freshdev_defaultà mmi_bth_nvram_write_info)
号码匹配
NVRAM_EF_SYS_CACHE_OCTET_DEFAULT
卡1/卡2是否插卡
        MTPNP_AD_Get_Card1Status() != MTPNP_AD_SIMCARD_ABSENT
        MTPNP_AD_Get_Card2Status() != MTPNP_AD_SIMCARD_ABSENT)
卡1/卡2是否可用
E_MTPNP_AD_SIMCARD_USABLE_SIDE MTPNP_AD_Get_UsableSide(void);
typedef enum
{
MTPNP_AD_DUALSIM_UNUSABLE = MTPNP_AD_FLIGHT,
MTPNP_AD_SIMCARD1_NOSIM_USABLE = MTPNP_AD_CARD1,
MTPNP_AD_SIMCARD2_NOSIM_USABLE = MTPNP_AD_CARD2,
MTPNP_AD_SIMCARD1_USABLE=MTPNP_AD_CARD1| MTPNP_AD_SIMCARD_VALID,
MTPNP_AD_SIMCARD2_USABLE=MTPNP_AD_CARD2| MTPNP_AD_SIMCARD_VALID,
MTPNP_AD_DUALSIM_USABLE= (MTPNP_AD_CARD1 | MTPNP_AD_SIMCARD_VALID) + (MTPNP_AD_CARD2 | MTPNP_AD_SIMCARD_VALID)
} E_MTPNP_AD_SIMCARD_USABLE_SIDE;
If(MTPNP_AD_Get_UsableSide() >= MTPNP_AD_SIMCARD1_USABLE)

判断网络:
Public Land Mobile Network -- 公共陆地移动(通信)网络
判断网络ID
卡1:memcmp(gHomePLMNNum, "51011", 5)
卡2:memcmp(gHomePLMNNum_2, "51011", 5)
gPLMN   手机卡1当前接入网络的网络ID
gPLMN_2 手机卡2当前接入网络的网络ID
中国移动:46000  46002
中国联通:46001
IMEI号(International Mobile Station Equipment Identity -- 国际移动台设备识别):手机设备的ID 又称手机串号,国际标准查询指令 *#06#
用4位二进制数来表示1位十进制数中的0~9这10个数码,简称BCD码
static kal_uint8 const NVRAM_EF_IMEI_IMEISV_DEFAULT[] =
{
/*355093016307403*/
    0x53, 0x05, 0x39, 0x10, 0x36, 0x70, 0x04, 0xF3, /*The IMEI is 15 digit */  
    0x87,       /* Software version number */
    0x01,        /* Padding */
    0x53, 0x05, 0x39, 0x10, 0x36, 0x70, 0x04, 0xF1, /*The IMEI is 15 digit */
    0x87,       /* Software version number */
    0x01        /* Padding */
};
获得IMEI号:消息MSG_ID_MMI_NW_GET_IMEI_REQ,目的task,消息RSP响应函数
static void APPLE_OS_RequestIMEIRsp(void *msg_buf)
{
    mmi_nw_get_imei_rsp_struct *imeiresponse = (mmi_nw_get_imei_rsp_struct*) msg_buf;
    if ((imeiresponse) && (imeiresponse->result == 1))
       {
       memset(gIMEIBuf,0,16+1);
       meMCPy((char *)gIMEIBuf, (char *) imeiresponse->imei,16);
       }
}
void APPLE_OS_RequestIMEI()
{
    MYQUEUE Message;
    Message.oslMsgId = MSG_ID_MMI_NW_GET_IMEI_REQ;
    Message.oslDataPtr = NULL;
    Message.oslPeerBuffPtr = NULL;
    Message.oslSrcId = MOD_MMI;
    Message.oslDestId = MOD_L4C;   /* MOD_L4C _2*/
    OslIntMsgSendExtQueue(&Message);
SetProtocolEventHandler(APPLE_OS_RequestIMEIRsp, MSG_ID_MMI_NW_GET_IMEI_RSP);
/*SetSlaveProtocolEventHandler(APPLE_OS_RequestIMEIRsp, MSG_ID_MMI_NW_GET_IMEI_RSP);*/
}
IMSI号(国际移动用户识别码(IMSI) International Mobile Subscriber Identity ):卡的ID,手机卡的唯一识别号是imsi号,而不是手机号,运营商后台数据库维护imsi号和手机号的一一映射,所以可以做到换卡不换号
MSI共有15位,其结构如下:
MCC+MNC+MIN
MCC:Mobile Country Code,移动国家码,共3位,中国为460;
MNC:Mobile Network Code,移动网络码,共2位,联通CDMA系统使用03,一个典型的IMSI号码为460030912121001;
获得IMSI号:消息PRT_GET_IMSI_REQ(MSG_ID_MMI_SMU_GET_IMSI_REQ):目的task,消息RSP
void mr_sim1_get_imsi_req(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    MYQUEUE Message;
    Message.oslSrcId = MOD_MMI;
    Message.oslDestId = MOD_L4C;
    Message.oslMsgId = PRT_GET_IMSI_REQ;
    Message.oslDataPtr = NULL;
    Message.oslPeerBuffPtr = NULL;
    OslMsgSendExtQueue(&Message);
    SetProtocolEventHandler(mr_sim_get_imsi_rsp, PRT_GET_IMSI_RSP);
}
static void mr_sim_get_imsi_rsp(void *msg_p)
{
    mmi_smu_get_imsi_rsp_struct *local_data_p = (mmi_smu_get_imsi_rsp_struct*) msg_p;
    kal_prompt_trace(MOD_MMI,"mr_sim_get_imsi_rsp local_data_p->result=%d",local_data_p->result);  
    if (local_data_p->result == ST_SUCCESS)
    {
       memset(gIMSI,0,sizeof(gIMSI));
       memcpy(gIMSI,local_data_p->imsi+1, 16);
    }
    kal_prompt_trace(MOD_MMI,"gIMSI=%s",gIMSI);

谢谢小编,多分享点ANDROID5.1的资料被  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top