針對手機的硬體差異性,為了減少應用移植中的工作,可以在應用中採用自適應的方法。每個手機都有各自的型別標識——平台標識,如果應用自身根據平台標識以及相應硬體資訊動態載入相應的資源,無疑可以實現某些應用的零工作量移植。獲得手機平台標識和相關硬體資訊的方式之一是使用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),這時需要應用程式多做一些工作。例如採用乙個配置檔案來定義位址簿或者鈴聲目錄中的域,應用程式在啟動時根據手機資訊來讀取配置檔案,這樣就能夠進一步彌補手機間的差異進而很好的實現移植了。
支援BREW的手機
目前,支援brew功能的手機還主要是cdma網路的使用者終端,但隨著3g的到來以及中國電信開始經營基於brew的移動增值業務,支援brew功能的手機會越來越多。最早在中國上市的手機是kz820和lg8088,截止到2003年年底,支援brew的部分手機如圖8 3所示。2004 年,brew 手機佔c...
BREW中的手機定製化
以往,由於中國2g 手機的多數業務集中於語音和簡訊,因此處於價值鏈兩端的運營商和製造商沒有找到太多的契合點。多數情況下,手機廠商的產品差異不多,而運營商對手機終端的決定權也不大。隨著智慧型手機的出現,運營商開始產生出手機定製的需求,這樣既可以使業務與手機相結合,也可以使自己利用終端優惠和業務優惠,推...
BREW手機中的事件處理
brew是基於事件驅動的,可以通過ishell介面中的相關方法傳送或接收指定的事件,事件在系統中的分發處理是通過aee層來實現的。傳送事件的方法有ishell sendevent,ishell postevent等,接收特定事件的方法主要是通過ishell registernotify方法來實現,也...