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
  • 電子郵件
  • 圖庫
  • 手勢建構工具
  • 日文文字輸入輸出編輯器
  • 訊息
  • 音樂
  • 設定
  • 備用零件 (開發人員應用程式)

語言/地區

可下載平台內含的系統映像檔提供多種內建語言代碼。在某些情況下,地區專屬字串適用於語言代碼。在其他情況下,系統會使用該語言的預設版本。以下列出 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 高密度,一般螢幕)

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

    開發人員功能

    下列各節將說明可下載的 Android 2.0 平台元件提供的新開發人員功能。

    Ant 支援

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

    Framework API

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

    API 級別

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

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

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

    API 變更摘要

    藍牙

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

    同步轉換介面

    • 全新的 API,讓同步轉換介面能連線至任何後端

    客戶經理

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

    聯絡人

    • 支援從多個帳戶取得資料的全新聯絡人 API
    • 新的快速聯絡人架構 API 可讓開發人員在應用程式中建立聯絡人徽章。按一下徽章即可開啟視窗,其中列出可用來與該人聯絡的方式,只要按一下即可聯絡。

    WebView

    • 已淘汰的類別:UrlInterceptHandler、Plugin、PluginData、PluginList、UrlInterceptRegistry。

    相機

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

    媒體

    • 當所有圖片插入 MediaStore 時,MediaScanner 會為這些圖片產生縮圖。
    • 全新的 縮圖 API,用於隨選擷取圖片和影片縮圖。

    其他架構

    • android.R.style 中推出新的系統主題,以便在目前的系統桌布上方輕鬆顯示活動,或在背景中持續顯示先前的活動。
    • 新的 WallpaperManager API 會取代先前在 Context 中的桌布 API,並擴充這些 API,讓應用程式能夠要求及設定系統桌布。
    • 新的 Service API 可協助應用程式正確處理服務生命週期,尤其是在記憶體執行期間可能終止的低記憶體情境。
      • Service.setForeground() 已淘汰,現在實際上不會執行任何作業。這已由新的 API 取代 (startForeground()),有助於 (且需要) 將進行中的通知與前景狀態建立關聯。
    • MotionEvent 現在可以針對支援這項功能的裝置回報即時觸控資訊。最多可同時追蹤三個指標。
    • KeyEvent 提供新的按鍵調度 API,可協助實作按鍵鬆開和長按行為,以及用於取消按鍵按下的全新機制 (適用於虛擬鍵)。
    • WindowManager.LayoutParams 加入新的常數,可讓視窗在顯示時喚醒螢幕,且即使螢幕處於鎖定狀態,仍會顯示視窗。這可讓應用程式更清楚地實作鬧鐘等需要喚醒裝置的功能。
    • 全新的 Intent API 可廣播裝置的固定狀態,並讓應用程式在桌面或車用座架上時,啟動特殊活動。

    在按鍵釋放時執行的重要事件

    Android 2.0 適用於使用 HOME、MENU、BACK 和 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 差異報告