Wednesday, October 28, 2009

Eclair (Android 2.0) 發佈



想不到才過了一個月,Android 2.0 這麼快就出來了。
對開發者來說,主要的變化是開放了原本的一些 internal API,包含 Bluetooth、多點(至多3點)觸控(MotionEvent)、AccountManager、Sync Adapter、Dock(底座)、並強化相機 API、瀏覽器支援 HTML5、支援更多種解析度機器...等。

除了大家期待已久的藍芽與多點觸控,開放 AccountManager、Sync Adapter、Dock這些 API 表示 Android 系統已經準備好讓開發者們能創造與 Google 以外的網路服務、與其他設備更加緊密結合的應用程式。真是很期待開發者們能怎麼運用這個強大的系統 :)

Monday, October 19, 2009

支援不同解析度的 Android Market

本來市面上 Android 相關機種一律都是 480*320 解析度,
Android 1.6 發佈後,也正式發售支援了其他使用不同解析度的機種,例如 QVGA(320*240) 或 WVGA(800*480)。

當然在不同的解析度下,畫面顯示上多少有些不同。
為了避免使用者裝到不適合解析度的程式而引發使用上的混亂,Android 1.6 在 AndroidManifest 清單中引入了「supports-screens」宣告。

一般來說要支援各種解析度,可以在編譯前先將編譯 Target 選為 1.6(專案名>右鍵>Properties>Android>Android 1.6),並在 AndroidManifest 清單中加入如下設定:


[supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="false"/]


「normalScreens」代表的是一般解析度(如 G1, Hero),「smallScreens」代表的是較低解析度(如 Tatoo)。

現在將程式發佈到 Android Market 時若沒做以上設定,你寫的程式將不會顯示在 QVGA/WVGA 機器的 Market 中。

那麼其他使用奇怪解析度的設備哩?(例如最近發表的某台 WQVGA 機器...)反正上面也沒有 Android Market, 就留給打算支援這些設備的開發者多傷一份腦筋啦.


PS: 將 Target 設為 1.6 跟在 AndroidManifest 清單中設定 minSdkVersion 最低相容版本並不衝突,只要 minSdkVersion 維持不變,低於 1.6 版的機器還是可以使用你的程式。


update: 事實上「smallScreens」代表的是小螢幕,「normalScreens」是一般螢幕,「largeScreens」當然是大螢幕。一般三者的分界點大概在3吋跟4吋。所以 Tattoo (2.8") 被歸在「smallScreens」範疇。