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 平台元件提供全新開發人員功能的相關資訊。

    足部支撐

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

    Framework API

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

    API 級別

    Android 2.0 平台提供新版架構 也能使用 Google Cloud CLI 或 Compute Engine API與先前版本相同,Android 2.0 API 會指派一個整數 ID (5),並儲存在系統本身。這個識別碼稱為「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 現在會為所有圖片產生縮圖。
    • 新的 Thumbnail API,可用於依需求擷取圖片和影片縮圖。

    其他架構

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

    透過 Key-up 執行的重要事件

    Android 2.0 適用於採用 HOME、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);
          }

    如果您想更新舊版應用程式,讓其對 BACK 鍵的處理方式在 Android 2.0 以上版本的平台上正常運作,可以使用類似上述方法。程式碼可攔截 鍵上的目標按鈕事件、設定標記以追蹤重要事件,以及 然後在按鍵上方擷取事件,如果追蹤 旗標另外建議你留意焦點變更,並清除追蹤項目 標記。

    API 差異報表

    如需 Android 2.0 (API 級別 5) 中 API 變更的詳細檢視畫面, 舊版,請參閱 API 差異報告