Android應用移植到OPhone平臺指南
1.1 概述
OPhone平臺基于Linux和開放手機聯盟(OHA)的Android系統,經過中國移動的創新研發,設計出擁有新穎獨特的用戶操作界面,增強了瀏覽器能力和WAP兼容性,優化了多媒體領域的OpenCORE、瀏覽器領域的WebKit等業內眾多知名引擎,增加了包括游戲、Widget、Java ME等在內的先進平臺中間件。
本文重點介紹OPhone和Android應用開發的差異,為OPhone和Android開發者提供指導.
1.2 兼容性
目前,OPhone共發布了1.0和1.5兩個平臺版本,其中OPhone 1.0與Android 1.0兼容,OPhone 1.5與Android 1.5兼容。由于Android 1.5與Android 1.0不兼容,因此OPhone 1.5與OPhone 1.0不兼容。Android 1.0 API和Android 1.5 API變化比較大,是導致OPhone 1.0和OPhone 1.5之間差異的主要原因。
Android CTS (Compatibility Test Suite)是Google提供的Android兼容性測試工具。CTS共有2萬多個測試用例,OPhone取得了很好的CTS測試結果:CTS測試通過率:99.96%。Android Market排名前270的應用(2009年10月)有超過80%的可以直接在OPhone平臺上運行。部分應用移植失敗的原因主要有:
OPhone不支持Google Maps庫
硬件方面的差異:顯示分辨率、傳感器、和硬件相關的特殊庫
Tabview的UI顯示
1.3 OPhone API
OPhone SDK在兼容Android API的基礎上還提供了OPhone API,來擴展OPhone平臺的能力。如果應用程序使用了OPhone API,則此程序無法移植到Android系統。關于OPhone API的使用,請參考OPhone開發者社區的文檔(http://www.ophonesdn.com/documentation/)。#t#
OPhone SDK 1.0提供了如下OPhone API:
Home Screen API
Local Search API
Mail API
OPhone SDK 1.5提供了如下OPhone API:
AGPS API
Video Telephony API
Home Screen API
Local Search API
1.4 應用程序模型
OPhone平臺除了支持APK應用程序開發之外,還支持Mobile Widget和Java ME應用程序開發。
Mobile Widget 應用是采用HTML、JavaScript和CSS等網絡技術開發的應用程序。在OPhone中,Mobile Widget應用遵循的是聯合創新實驗室(Joint Innovation Lab, JIL) 的JIL Widget 規范。詳細信息請參考如下網址:
Ophone平臺支持Java ME應用程序(MIDlet)的開發,目前OPhone 1.5上實現了中國移動Java 4.1規范。
1.5 應用程序開發的差異
1.5.1 網絡數據連接的方法
OPhone與Android建立網絡數據連接的方法有所不同。OPhone 平臺實現了多個應用程序對分組數據復用的功能,不同的應用可以根據自身需要,打開不同的網絡連接,通過這種方式我們可以在不同的OPhone應用中同時進行諸如瀏覽網頁、接受彩信、發送郵件這樣的網絡任務。
關于如何在OPhone中實現網絡連接的管理,詳情請見:
1.5.2 不支持Google Maps
OPhone目前不支持Google Maps API,因此使用Google Maps API開發的Android應用程序將無法移植到OPhone平臺。
1.5.3 多分辨率支持由于市面上的大部分Android終端設備都是HVGA(480x320),因此許多應用程序在開發時并未考慮多分辨率的問題。這就導致部分Android Market上的應用程序安裝在非HVGA(480x320)分辨率的OPhone終端,出現分辨率不匹配的問題。
目前OPhone終端除了支持HVGA(480x320)分辨率之外,還支持nHD(640x360)、WVGA(800x480)、FWVGA(854x480)等。因此,在OPhone平臺上開發應用程序,應當考慮多分辨率支持,并且在模擬器上應用測試時使用分辨率設置。#p#
不同的OPhone終端所支持的傳感器不同,因此一些需要特殊傳感器支持的游戲或應用無法在某些OPhone終端上正常運行。
目前Android 平臺支持的傳感器有:
android. hardware.Sensor
– TYPE_ACCELEROMETER
– TYPE_GYROSCOPE
– TYPE_LIGHT
– TYPE_MAGNETIC_FIELD
– TYPE_ORIENTATION
– TYPE_PRESSURE
– TYPE_PROXIMITY
– TYPE_TEMPERATURE
目前的建議是,在使用之前先檢測當前OPhone終端支持哪些傳感器,相關的測試代碼如下:
- SensorManager sensorMgr =
- (SensorManager)getSystemService(Context.SENSOR_SERVICE);
- List list = sensorMgr.getSensorList(Sensor.TYPE_ALL);
- for (int i = 0; i < list.size(); i++) {
- Sensor sensor = (Sensor) list.get(i);
- result += "\t" + sensor.getName() + "\n";
- }
1.5.5 Tabview的UI顯示
部分Android Market上使用了Tabview的應用安裝在OPhone終端上會出現顯示錯誤。這是由于OPhone平臺只允許在一屏有三個Tab,而對此的實現導致了該問題的發生。
但只要嚴格按照以下例子程序就可以避免該問題的出現:
1.5.6 OPhone特殊UI風格
由于部分的OPhone終端設備沒有Home按鍵,因此對于應用開發者而言,不建議隱藏Status Bar和Title Bar。
但由于某些應用,特別是游戲,需要全屏顯示,可以參考一下代碼實現:
1.5.7 應用簽名
OPhone平臺和Android平臺在應用簽名方面沒有區別,但需要注意的是,調試用簽名和發布用簽名所使用的證書是不同的。如果應用程序沒有被簽名,在安裝的時候就會出現以下錯誤:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]