不同品牌BREW手機間的應用移植

針對手機的硬件差異性,爲了減少應用移植中的工作,可以在應用中採用自適應的方法。每個手機都有各自的類型標識——平臺標識,如果應用自身根據平臺標識以及相應硬件信息動態加載相應的資源,無疑可以實現某些應用的零工作量移植。獲得手機平臺標識和相關硬件信息的方式之一是使用ISHELL_GetDeviceInfo()和ISHELL_GetDeviceInfoEx()。

            ISHELL_GetDeviceInfo()可以在 AEE層中查詢有關手機性能的信息,例如所支持的 RAM 總量、屏幕顯示等其它項目。要獲取 AEEDeviceInfo結構中的 dwNetLinger 和 dwSleepDefer值,在調用此函數之前,wStructSize 必須等於sizeof(AEEDeviceInfo)。

            ISHELL_GetDeviceInfoEx()用於獲取有關設備的特定信息(AEEDeviceItem)。此函數使用 ID 指定所需的信息,返回時在緩衝區中包含對應的信息。這些ID所表示的含義如表15-2所示。

ID的名稱
 含義說明
 
AEE_DEVICEITEM_CHIP_ID
 標識芯片組 ID 的字符串
 
AEE_DEVICEITEM_MOBILE_ID
 標識手持設備的移動 ID 的一個 ASCII 字符串
 
AEE_DEVICEITEM_AMR_VOCODER_SUPPORT
 是否支持 AMR (Adaptive Multi-Rate) 聲碼器
 
AEE_DEVICEITEM_EVRC_VOCODER_SUPPORT
 是否支持 EVRC(增強型變速率編碼)聲碼器
 
AEE_DEVICEITEM_IS96_VOCODER_SUPPORT
 否支持 QCELP-IS96(8K)(Qualcomm 碼激勵線性預測編碼)聲碼器
 
AEE_DEVICEITEM_IS96A_VOCODER_SUPPORT
 否支持 QCELP-IS96A(8K)(Qualcomm 碼激勵線性預測編碼)聲碼器
 
AEE_DEVICEITEM_IS733_VOCODER_SUPPORT
 是否支持 QCELP-IS733(Qualcomm 碼激勵線性預測編碼)聲碼器
 
AEE_DEVICEITEM_SMV_VOCODER_SUPPORT
 是否支持可選擇模式的聲碼器
 
AEE_DEVICEITEM_SYS_COLORS_DISP1 AEE_DEVICEITEM_SYS_COLORS_DISP2 AEE_DEVICEITEM_SYS_COLORS_DISP3 AEE_DEVICEITEM_SYS_COLORS_DISP4
 返回與特定顯示屏幕關聯的系統顏色列表
 
AEE_DEVICEITEM_DISPINFO1 AEE_DEVICEITEM_DISPINFO2 AEE_DEVICEITEM_DISPINFO3 AEE_DEVICEITEM_DISPINFO4
 返回特定顯示屏幕的相關信息
 
AEE_DEVICEITEM_CARRIER_ID
 標識手持設備的運營商 ID 的一個 uint32 值
 
AEE_DEVICEITEM_SIDHASH
 返回手持設備的支付帳戶的一個散列。 可用於確定是否已更換了支付帳戶,例如在調換了 RUIM 卡時。 請注意,不會返回具體的帳號,而只是返回一個帳戶字符串的散列。
 
AEE_DEVICESTATE_KEYS_PRESSED
 返回處於按下狀態的按鍵的值
 
AEE_DEVICESTATE_FLIP_OPEN
 在設備翻蓋處於打開狀態時返回 TRUE,否則返回 FALSE
 
AEE_DEVICESTATE_HEADPHONE_ON
 如果設備耳機是打開的,返回 TRUE,否則返回 FALSE
 
AEE_DEVICESTATE_KEYGUARD_ON
 如果設備的鍵盤是打開,將返回 TRUE,否則返回 FALSE
 
AEE_DEVICESTATE_SPEAKER_ON
 如果設備的揚聲器爲打開則返回 TRUE,否則返回 FALSE
 
AEE_DEVICEITEM_USER
 OEM 定義項目的起始點
 

表 15-2:可以用ISHELL_GetDeviceInfoEx()獲取的有關設備的特定信息

根據AEEDeviceInfo和AEEDeviceItem中的信息,應用可以做到動態加載資源文件。當然這些資源信息也可以保存在服務器上,應用程序通過網絡通信的方式獲得這些資源數據,從而完成一個應用在不同手機上的適配。

如果某些手機不支持某些接口,應用程序可以通過判斷該接口是否創建成功獲得該信息。例如在內存沒有問題的情況下,創建IPosDet接口失敗,很可能是由於該手機不支持定位功能造成的。這時,應用程序就應該不提供定位功能,從而成爲只具備瀏覽查詢功能的一個LBS應用。

如果是兩臺手機對同一接口的功能存在差異(一般出現在IRingerMgr或者IAddrBook),這時需要應用程序多做一些工作。例如採用一個配置文件來定義地址簿或者鈴聲目錄中的域,應用程序在啓動時根據手機信息來讀取配置文件,這樣就能夠進一步彌補手機間的差異進而很好的實現移植了。

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