1.1 概述
OPhone平臺基于linux和開放手機聯(lián)盟(OHA)的Android系統(tǒng),經(jīng)過中國移動的創(chuàng)新研發(fā),設(shè)計出擁有新穎獨特的用戶操作界面,增強了瀏覽器能力和WAP兼容性,優(yōu)化了多媒體領(lǐng)域的OpenCORE、瀏覽器領(lǐng)域的WebKit等業(yè)內(nèi)眾多知名引擎,增加了包括游戲、Widget、Java ME等在內(nèi)的先進平臺中間件。
本文重點介紹OPhone和Android應(yīng)用開發(fā)的差異,為OPhone和Android開發(fā)者提供指導(dǎo)。
1.2 兼容性
目前,OPhone共發(fā)布了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變化比較大,是導(dǎo)致OPhone 1.0和OPhone 1.5之間差異的主要原因。
Android CTS (Compatibility Test Suite)是google提供的Android兼容性測試工具。CTS共有2萬多個測試用例,OPhone取得了很好的CTS測試結(jié)果:CTS測試通過率:99.96%。Android Market排名前270的應(yīng)用(2009年10月)有超過80%的可以直接在OPhone平臺上運行。部分應(yīng)用移植失敗的原因主要有:
OPhone不支持Google Maps庫
硬件方面的差異:顯示分辨率、傳感器、和硬件相關(guān)的特殊庫
Tabview的UI顯示
1.3 OPhone API
OPhone SDK在兼容Android API的基礎(chǔ)上還提供了OPhone API,來擴展OPhone平臺的能力。如果應(yīng)用程序使用了OPhone API,則此程序無法移植到Android系統(tǒng)。關(guān)于OPhone API的使用,請參考OPhone開發(fā)者社區(qū)的文檔(http://www.ophonesdn.com/documentation/)。
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 應(yīng)用程序模型
OPhone平臺除了支持APK應(yīng)用程序開發(fā)之外,還支持Mobile Widget和Java ME應(yīng)用程序開發(fā)。
Mobile Widget 應(yīng)用是采用HTML、JavaScript和CSS等網(wǎng)絡(luò)技術(shù)開發(fā)的應(yīng)用程序。在OPhone中,Mobile Widget應(yīng)用遵循的是聯(lián)合創(chuàng)新實驗室(Joint Innovation Lab, JIL) 的JIL Widget 規(guī)范。詳細信息請參考如下網(wǎng)址:
http://www.ophonesdn.com/documentation/widget/index.html
OPhone平臺支持Java ME應(yīng)用程序(MIDlet)的開發(fā),目前OPhone 1.5上實現(xiàn)了中國移動Java 4.1規(guī)范。
1.5 應(yīng)用程序開發(fā)的差異
1.5.1 網(wǎng)絡(luò)數(shù)據(jù)連接的方法
OPhone與Android建立網(wǎng)絡(luò)數(shù)據(jù)連接的方法有所不同。OPhone 平臺實現(xiàn)了多個應(yīng)用程序?qū)Ψ纸M數(shù)據(jù)復(fù)用的功能,不同的應(yīng)用可以根據(jù)自身需要,打開不同的網(wǎng)絡(luò)連接,通過這種方式我們可以在不同的OPhone應(yīng)用中同時進行諸如瀏覽網(wǎng)頁、接受彩信、發(fā)送郵件這樣的網(wǎng)絡(luò)任務(wù)。
關(guān)于如何在OPhone中實現(xiàn)網(wǎng)絡(luò)連接的管理,詳情請見:
http://www.ophonesdn.com/article/show/105
1.5.2 不支持Google Maps
OPhone目前不支持Google Maps API,因此使用Google Maps API開發(fā)的Android應(yīng)用程序?qū)o法移植到OPhone平臺。
1.5.3 多分辨率支持
由于市面上的大部分Android終端設(shè)備都是HVGA(480x320),因此許多應(yīng)用程序在開發(fā)時并未考慮多分辨率的問題。這就導(dǎo)致部分Android Market上的應(yīng)用程序安裝在非HVGA(480x320)分辨率的OPhone終端,出現(xiàn)分辨率不匹配的問題。
目前OPhone終端除了支持HVGA(480x320)分辨率之外,還支持nHD(640x360)、WVGA(800x480)、FWVGA(854x480)等。因此,在OPhone平臺上開發(fā)應(yīng)用程序,應(yīng)當(dāng)考慮多分辨率支持,并且在模擬器上應(yīng)用測試時使用分辨率設(shè)置。
關(guān)于如何在OPhone中實現(xiàn)多分辨支持,詳情請見:
http://developer.android.com/guide/practices/screens_support.html
http://www.ophonesdn.com/article/show/42
1.5.4 傳感器支持
不同的OPhone終端所支持的傳感器不同,因此一些需要特殊傳感器支持的游戲或應(yīng)用無法在某些OPhone終端上正常運行。
目前Android 平臺支持的傳感器有:
android. hardware.Sensor
– TYPE_ACCELEROMETER
– TYPE_GYROSCOPE
– TYPE_LIGHT
– TYPE_MAGNETIC_FIELD
– TYPE_ORIENTATION
– TYPE_PRESSURE
– TYPE_PROXIMITY
– TYPE_TEMPERATURE
目前的建議是,在使用之前先檢測當(dāng)前OPhone終端支持哪些傳感器,相關(guān)的測試代碼如下:
- 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的應(yīng)用安裝在OPhone終端上會出現(xiàn)顯示錯誤。這是由于OPhone平臺只允許在一屏有三個Tab,而對此的實現(xiàn)導(dǎo)致了該問題的發(fā)生。
但只要嚴格按照以下例子程序就可以避免該問題的出現(xiàn):
- TabHost tabHost = getTabHost(); LayoutInflater.from(this).inflate(R.layout.tabs1, tabHost.getTabContentView(), true); tabHost.addTab(tabHost.newTabSpec("tab1") .setIndicator("tab1") .setContent(R.id.view1)); tabHost.addTab(tabHost.newTabSpec("tab3") .setIndicator("tab2") .setContent(R.id.view2)); tabHost.addTab(tabHost.newTabSpec("tab3") .setIndicator("tab3") .setContent(R.id.view3));
1.5.6 OPhone特殊UI風(fēng)格
由于部分的OPhone終端設(shè)備沒有Home按鍵,因此對于應(yīng)用開發(fā)者而言,不建議隱藏Status Bar和Title Bar。
但由于某些應(yīng)用,特別是游戲,需要全屏顯示,可以參考一下代碼實現(xiàn):
- //Hide title bar requestWindowFeature(Window.FEATURE_NO_TITLE); //Hide status bar getWindow().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_ FULLSCREEN);
1.5.7 應(yīng)用簽名
OPhone平臺和Android平臺在應(yīng)用簽名方面沒有區(qū)別,但需要注意的是,調(diào)試用簽名和發(fā)布用簽名所使用的證書是不同的。如果應(yīng)用程序沒有被簽名,在安裝的時候就會出現(xiàn)以下錯誤:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
如何對應(yīng)用程序簽名,詳情可以參考一下文檔:
http://developer.android.com/guide/publishing/app-signing.html