Android 2.0,版本 1

API 級別: 5

Android 2.0 是從 2009 年 11 月起提供給 Android 手機的主要平台版本,此版本包含使用者和開發人員的新功能,以及 Android 架構 API 的變更。

對開發人員來說,Android 2.0 平台是 Android SDK 的可下載元件。這個可下載平台包含一個完全相容的 Android 程式庫和系統映像檔,以及一組模擬器外觀、範例應用程式等。可下載平台完全符合規定,而且不包含外部程式庫。

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

平台特色

如需新使用者功能和平台重點資訊清單,請參閱 Android 2.0 平台特點文件。

內建應用程式

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

  • 鬧鐘
  • Browser
  • 計算機
  • 攝錄影機
  • 相機
  • 聯絡人
  • 自訂語言代碼 (開發人員應用程式)
  • 開發人員工具 (開發人員工具)
  • Dialer
  • 電子郵件
  • 擴充功能庫
  • 手勢建構工具
  • 日文輸入文字的 IME
  • 訊息
  • 音樂
  • 設定
  • Spare Parts (開發人員應用程式)

語言/地區

可下載平台內含的系統映像檔提供多種內建語言代碼。在某些情況下,地區專屬字串可用於語言代碼。在其他情況下,則會使用預設語言。以下列出 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 (240x320,低密度,小螢幕)
    • WQVGA (240x400,低密度、一般螢幕)
    • FWQVGA (240x432,低密度、一般螢幕)
    • HVGA (320x480,中密度、一般螢幕)
    • WVGA800 (480x800,高密度、一般螢幕)
    • WVGA854 (480x854 high 像素密度、一般螢幕)

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

    開發人員功能

    下列各節提供可下載 Android 2.0 平台元件所提供的新開發人員功能的相關資訊。

    支援 Ant

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

    架構 API

    下列各節針對 Android 2.0 平台提供的應用程式架構 API 提供了相關資訊。

    API 級別

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

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

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

    API 變更摘要

    藍牙

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

    同步轉換介面

    • 新增用於連結任何後端的同步轉換介面 API

    帳戶管理員

    • 集中式帳戶管理工具 API,可安全地儲存及存取驗證權杖/密碼

    聯絡人

    • 新的 Contacts API 可擷取多個帳戶的資料
    • 新的「快速聯絡人架構」API 可讓開發人員在應用程式中建立聯絡人徽章。按一下徽章即可開啟視窗,其中列出各種聯絡方式,只要按一下即可聯絡對方。

    WebView

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

    相機

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

    媒體

    • 現在,將圖片插入 MediaStore 時,MediaScanner 會為所有圖片產生縮圖。
    • 推出新的縮圖 API,用於隨選擷取圖片和影片縮圖。

    其他架構

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

    在按鍵時執行的重要事件

    Android 2.0 經過精心設計,可在使用 HOME、MENU、BACK 和 SEARCH 虛擬鍵 (而非實體按鍵) 的裝置上執行。為協助這些裝置提供最佳使用者體驗,Android 平台現在會在按鍵時執行這些按鈕,用於鍵/向上/鍵組合,而非按下鍵。這有助於避免意外按鈕事件,讓使用者在不產生事件的情況下,按下按鈕區域並拖出該區域。

    這項行為變更只會影響您的應用程式,只有當應用程式可攔截按鈕事件並對鍵執行動作 (而不是使用按鍵操作) 時才會受到影響。尤其是在應用程式攔截 BACK 鍵時,您應確保應用程式能正確處理按鍵事件。

    一般而言,我們不建議攔截應用程式中的 BACK 金鑰,但如果應用程式執行這類動作,並且會在鍵下叫用某些動作,而非按下按鍵動作,那麼您應該修改程式碼。

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

    • 如果攔截的是活動或對話方塊中的 BACK 鍵,請直接實作新的 onBackPressed() 方法。
    • 如果您在檢視畫面中攔截了 BACK 鍵,則需在鍵下追蹤重要事件 (透過新的 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 及舊版平台版本正確處理返回鍵的處理方式,可以使用與上述類似的方法。程式碼可在 keydown 擷取目標按鈕事件、設定用來追蹤按鍵事件的標記,然後在按鍵時擷取事件,如果已設定追蹤標記,便執行所需的動作。此外,您也應該注意焦點變更,並在取得/關閉焦點時清除追蹤標記。

    API 差異報表

    如要瞭解 Android 2.0 (API 級別 5) 的 API 變更與先前版本的差異,請參閱 API 差異報表