Android 2.0,版本 1

API 級別5

自 2009 年 11 月起,Android 2.0 是可部署至 Android 手機的主要平台版本。這個版本包含使用者和開發人員的新功能,以及 Android 架構 API 中的變更。

對開發人員而言,Android 2.0 平台可做為 Android SDK 的可下載元件使用。可下載的平台包含完全符合規定的 Android 程式庫和系統映像檔,以及一組模擬器外觀、範例應用程式等。可下載的平台完全符合規定,不含任何外部程式庫。

如要開始針對 Android 2.0 平台進行開發或測試,請使用 Android SDK 和 AVD Manager 工具將平台下載到 SDK。

平台特點

如需新使用者功能和平台重點特色清單,請參閱「Android 2.0 平台精選內容」文件。

內建應用程式

可下載平台中包含的系統映像檔提供以下內建應用程式:

  • 鬧鐘
  • Browser
  • 計算機
  • 攝錄影機
  • 鏡頭
  • 聯絡人
  • 自訂語言代碼 (開發人員應用程式)
  • 開發人員工具 (開發人員應用程式)
  • Dialer
  • 電子郵件地址
  • 擴充功能庫
  • 手勢建構工具
  • 日文輸入文字輸入法編輯器
  • 訊息
  • 音樂
  • 設定
  • 備用零件 (開發人員應用程式)

語言/地區

可下載平台中包含的系統映像檔提供多種內建語言代碼。在某些情況下,語言代碼可以使用地區專屬字串。在其他情況下,則會使用預設語言。以下列出 Android 2.0 系統映像檔提供的語言 (使用 language_country/region 語言代碼描述元)。

  • 中文,中華人民共和國 (zh_CN)
  • 中文,台灣 (zh_TW)
  • 捷克文 (cs_CZ)
  • 荷蘭文,荷蘭 (nl_NL)
  • 荷蘭文,比利時 (nl_BE)
  • 英文,美國 (en_US)
  • 英文,英國 (en_GB)
  • 英文,加拿大 (en_CA)
  • 英文,澳洲 (en_AU)
  • 英文,紐西蘭 (en_NZ)
  • 英文,新加坡(en_SG)
  • 法文,法國 (fr_FR)
  • 法文、比利時 (fr_BE)
  • 法文,加拿大 (fr_CA)
  • 法文,瑞士 (fr_CH)
  • 德文,德國 (de_DE)
  • 德文,奧地利 (de_AT)
  • 德文,瑞士 (de_CH)
  • 德文,列支敦斯登 (de_LI)
  • 義大利語 (it_IT)
  • 義大利文,瑞士 (it_CH)
  • 日文 (ja_JP)
  • 韓文 (ko_KR)
  • 波蘭文 (pl_PL)
  • 俄文 (ru_RU)
  • 西班牙文 (es_ES)
  • 本地化 UI 字串會與可透過「設定」存取的語言代碼相符。

    模擬器外觀

    可下載的平台包含一組模擬器外觀,可讓您建立不同螢幕大小和解析度的應用程式模型。模擬器外觀如下:

    • QVGA (240 x 320,低密度螢幕,小螢幕)
    • WQVGA (240x400、低密度、一般螢幕)
    • FWQVGA (240x432,低密度、一般螢幕)
    • HVGA (320x480,中密度、一般螢幕)
    • WVGA800 (480x800,高密度螢幕、一般螢幕)
    • WVGA854 (480x854 高密度、一般螢幕)

    如要進一步瞭解如何開發可在所有 Android 裝置上正確顯示及運作的應用程式,請參閱「支援多螢幕」。

    開發人員功能

    以下各節針對可下載的 Android 2.0 平台元件提供的新功能提供相關資訊。

    螞蟻

    • 偵錯和發布模式應用程式簽署。版本模式簽署包含 zipalign 最佳化的整合式支援。詳情請參閱「簽署應用程式」。
    • 新增支援 Emma 檢測專案 (程式碼涵蓋率) 的全新 Ant 建構系統。

    Framework API

    以下各節說明 Android 2.0 平台提供的應用程式架構 API 資訊。

    API 級別

    Android 2.0 平台提供新版架構 API。和先前的版本一樣,Android 2.0 API 會指派一個儲存在系統本身中的整數 ID (5)。這個 ID 稱為「API 級別」,可讓系統在安裝應用程式前,正確判斷應用程式是否與系統相容。

    如要在應用程式中使用 Android 2.0 中導入的 API,您需要在應用程式資訊清單中的 <uses-sdk> 元素屬性中設定適當的值「5」。

    如要進一步瞭解如何使用 API 級別,請參閱 API 級別說明文件。

    API 變更摘要

    藍牙

    • 開啟/關閉藍牙
    • 探索裝置和服務
    • 使用 RFCOMM 連線至遠端裝置,並傳送/接收資料
    • 宣傳 RFCOMM 服務,並監聽傳入的 RFCOMM 連線

    同步轉換介面

    • 用於將轉換轉接器連結至任何後端的新 API

    帳戶管理員

    • 集中式客戶經理 API,以安全的方式儲存及存取驗證權杖/密碼

    聯絡人

    • 新增聯絡人 API,支援多個帳戶的資料
    • 全新的 Quick Contact Framework API 可讓開發人員在應用程式中建立聯絡人徽章。按一下徽章即可開啟視窗,當中列出可透過多種方式與使用者聯絡的方式。

    WebView

    • 已淘汰的類別:UrlInterceptHandler、外掛程式、外掛程式資料、 PluginList、UrlInterceptRegistry。

    鏡頭

    • 新增色彩效果、場景模式、閃光燈模式、聚焦模式、白平衡、旋轉和其他設定的參數。
    • 新增 ZoomCallback 介面,可在縮放等級變更時執行動作。

    媒體

    • 現在當 MediaScanner 插入 MediaStore 時,會產生所有圖片的縮圖。
    • 新增 thumb API 可視需求擷取圖片和影片縮圖。

    其他架構

    • android.R.style 的全新系統主題可讓您輕鬆將活動顯示在目前的系統桌布頂端,或讓先前的活動持續在背景顯示。
    • 新的 WallpaperManager API 會取代並擴充先前在 Context 中的桌布 API,以允許應用程式要求及設定系統桌布。
    • 新的 Service API 能協助應用程式正確處理服務生命週期,特別是在記憶體不足的情況下,服務可能會在執行期間被終止。
      • Service.setForeground() 已淘汰,因此目前不會執行任何作業。這會由新的 API startForeground() 取代,而這有助於 (且需要) 將持續進行的通知與前景狀態建立關聯。
    • MotionEvent 現在可以針對支援此功能的裝置回報同步觸控資訊。最多可以同時追蹤三個指標。
    • KeyEvent 提供新的金鑰分派 API,可協助您實作向上動作和長按行為,以及取消按鍵操作的新機制 (適用於虛擬按鍵)。
    • WindowManager.LayoutParams 有新的常數,可讓視窗在顯示時喚醒螢幕,即使螢幕處於鎖定狀態,也能顯示視窗。如此一來,應用程式就能更明確地實作應喚醒裝置的鬧鐘等項目。
    • 新的 Intent API 可以播送裝置座架狀態,並讓應用程式在裝置放在桌面或車用座架上時啟動特殊活動。

    在按鍵上運作時執行的重要事件

    Android 2.0 經過特別設計,可在使用 HOME、MENU、返回和 SEARCH 虛擬按鍵的裝置上執行,而非使用實體按鍵。為了在這些裝置上提供最佳使用者體驗,Android 平台現在會於按鍵鍵對時執行這些按鈕,適用於按鍵/按鍵組合而非按鍵組合。這有助於防止意外的按鈕事件,讓使用者按下按鈕區域後離開,而不會產生事件。

    只有在應用程式攔截按鈕事件並對按鍵按下動作 (而非按鍵時) 時,此行為變更才會對應用程式造成影響。尤其是當應用程式攔截返回鍵時,您應確保應用程式能正確處理按鍵事件。

    一般而言,我們不建議攔截應用程式中的返回鍵,但如果應用程式這麼做,且會在按鍵按下時叫用某些動作 (而非按下按鍵),則應修改程式碼。

    如果您的應用程式會使用 Android 2.0 (API 級別 5) 中導入的 API,您可以利用新的 API 管理鍵/事件組合:

    • 如要攔截活動或對話方塊中的返回鍵,只要實作新的 onBackPressed() 方法即可。
    • 如果要在檢視畫面中攔截返回鍵,則應透過新的 startTracking() 方法追蹤按鍵事件,然後在鍵上叫用動作。您可以使用以下模式:
    • Kotlin

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }
      

      Java

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }
      

    如果您想更新舊版應用程式,讓其對 Android 2.0 和舊版平台版本都能正確處理返回金鑰,可以採用類似上述方法。您的程式碼可在按下按鍵時擷取目標按鈕事件、設定標記來追蹤按鍵事件,並在鍵上擷取事件,並在已設定追蹤標記時執行所需的動作。您也可以留意焦點變更,並在獲得/關閉焦點時清除追蹤標記。

    API 差異報表

    如要查看 Android 2.0 (API 級別 5) 中的 API 異動詳情,並與先前的版本進行比較,請參閱 API 差異報告