Android 2.0, Bản phát hành 1

Cấp độ API: 5

Android 2.0 là một bản phát hành nền tảng chính có thể triển khai cho điện thoại di động chạy Android bắt đầu từ tháng 11 năm 2009. Bản phát hành này bao gồm các tính năng mới dành cho người dùng và nhà phát triển, cũng như các thay đổi về API khung Android.

Đối với nhà phát triển, nền tảng Android 2.0 có sẵn dưới dạng một thành phần có thể tải xuống cho SDK Android. Nền tảng có thể tải xuống này bao gồm thư viện Android và hình ảnh hệ thống hoàn toàn tuân thủ, cũng như một tập hợp các giao diện trình mô phỏng, ứng dụng mẫu, v.v. Nền tảng có thể tải xuống này hoàn toàn tuân thủ và không có thư viện bên ngoài.

Để bắt đầu phát triển hoặc kiểm thử trên nền tảng Android 2.0, hãy sử dụng SDK Android và công cụ Trình quản lý thiết bị ảo Android để tải nền tảng xuống SDK của bạn.

Nền tảng nổi bật

Để biết danh sách các tính năng mới dành cho người dùng và thông tin nổi bật về nền tảng, hãy xem tài liệu Điểm nổi bật của nền tảng Android 2.0.

Ứng dụng tích hợp

Hình ảnh hệ thống có trong nền tảng có thể tải xuống cung cấp các ứng dụng tích hợp sau:

  • Đồng hồ báo thức
  • Trình duyệt
  • Máy tính
  • Máy quay video
  • Camera
  • Danh bạ
  • Ngôn ngữ tuỳ chỉnh (ứng dụng dành cho nhà phát triển)
  • Công cụ cho nhà phát triển (ứng dụng dành cho nhà phát triển)
  • Dialer
  • Email
  • Thư viện
  • Trình tạo cử chỉ
  • IME để nhập văn bản tiếng Nhật
  • Nhắn tin
  • Âm nhạc
  • Cài đặt
  • Spare Parts (ứng dụng dành cho nhà phát triển)

Ngôn ngữ

Hình ảnh hệ thống có trong nền tảng có thể tải xuống cung cấp nhiều ngôn ngữ tích hợp. Trong một số trường hợp, các chuỗi dành riêng cho khu vực sẽ có sẵn cho ngôn ngữ. Trong các trường hợp khác, phiên bản mặc định của ngôn ngữ sẽ được sử dụng. Các ngôn ngữ có trong ảnh hệ thống Android 2.0 được liệt kê dưới đây (kèm theo phần mô tả ngôn ngữ theo language_country/region).

  • Tiếng Trung, Trung Quốc (zh_CN)
  • Tiếng Trung, Đài Loan (zh_TW)
  • Tiếng Séc (cs_CZ)
  • Tiếng Hà Lan, Hà Lan (nl_NL)
  • Tiếng Hà Lan, Bỉ (nl_BE)
  • Tiếng Anh, Hoa Kỳ (en_US)
  • Tiếng Anh, Anh (en_GB)
  • Tiếng Anh, Canada (en_CA)
  • Tiếng Anh, Úc (en_AU)
  • Tiếng Anh, New Zealand (en_NZ)
  • Tiếng Anh, Singapore(en_SG)
  • Tiếng Pháp, Pháp (fr_FR)
  • Tiếng Pháp, Bỉ (fr_BE)
  • Tiếng Pháp, Canada (fr_CA)
  • Tiếng Pháp, Thuỵ Sĩ (fr_CH)
  • Tiếng Đức, Đức (de_DE)
  • Tiếng Đức, Áo (de_AT)
  • Tiếng Đức, Thuỵ Sĩ (de_CH)
  • Tiếng Đức, Liechtenstein (de_LI)
  • Tiếng Ý, Ý (it_IT)
  • Tiếng Ý, Thuỵ Sĩ (it_CH)
  • Tiếng Nhật (ja_JP)
  • Tiếng Hàn (ko_KR)
  • Tiếng Ba Lan (pl_PL)
  • Tiếng Nga (ru_RU)
  • Tiếng Tây Ban Nha (es_ES)
  • Các chuỗi giao diện người dùng đã bản địa hoá khớp với các ngôn ngữ có thể truy cập thông qua phần Cài đặt.

    Giao diện trình mô phỏng

    Nền tảng có thể tải xuống bao gồm một tập hợp các giao diện trình mô phỏng mà bạn có thể dùng để lập mô hình ứng dụng của mình ở nhiều kích thước và độ phân giải màn hình. Các giao diện của trình mô phỏng:

    • QVGA (240x320, mật độ thấp, màn hình nhỏ)
    • WQVGA (240x400, mật độ thấp, màn hình bình thường)
    • FWQVGA (240x432, mật độ thấp, màn hình bình thường)
    • HVGA (320x480, mật độ trung bình, màn hình thông thường)
    • WVGA800 (480x800, mật độ cao, màn hình thông thường)
    • WVGA854 (mật độ cao 480 x 854, màn hình bình thường)

    Để biết thêm thông tin về cách phát triển một ứng dụng hiển thị và hoạt động đúng cách trên tất cả thiết bị chạy Android, hãy xem phần Hỗ trợ nhiều màn hình.

    Tính năng dành cho nhà phát triển

    Các phần dưới đây cung cấp thông tin về các tính năng mới dành cho nhà phát triển do thành phần nền tảng Android 2.0 có thể tải xuống cung cấp.

    Hỗ trợ Ant

    • Ký ứng dụng ở chế độ gỡ lỗi và phát hành. Tính năng ký ở chế độ phát hành bao gồm tính năng hỗ trợ tích hợp cho việc tối ưu hoá zipalign. Để biết thêm thông tin, hãy xem bài viết Ký ứng dụng.
    • Thêm hệ thống xây dựng Ant mới có hỗ trợ các dự án đo lường Emma (mức độ sử dụng mã).

    API khung

    Các phần dưới đây cung cấp thông tin về API khung ứng dụng do nền tảng Android 2.0 cung cấp.

    Cấp độ API

    Nền tảng Android 2.0 cung cấp phiên bản cập nhật của API khung. Giống như các phiên bản trước, API Android 2.0 được gán một giá trị nhận dạng số nguyên – 5 – được lưu trữ trong chính hệ thống. Giá trị nhận dạng này, được gọi là "Cấp độ API", cho phép hệ thống xác định chính xác xem một ứng dụng có tương thích với hệ thống hay không trước khi cài đặt ứng dụng.

    Để sử dụng các API được giới thiệu trong Android 2.0 trong ứng dụng, bạn cần đặt giá trị thích hợp, "5", trong các thuộc tính của phần tử <uses-sdk> trong tệp kê khai của ứng dụng.

    Để biết thêm thông tin về cách sử dụng Cấp độ API, hãy xem tài liệu về Cấp độ API.

    Tóm tắt các thay đổi về API

    Bluetooth

    • Bật/tắt Bluetooth
    • Khám phá thiết bị và dịch vụ
    • Kết nối với một thiết bị từ xa bằng RFCOMM và gửi/nhận dữ liệu
    • Quảng cáo các dịch vụ RFCOMM và lắng nghe kết nối RFCOMM đến

    Bộ điều hợp đồng bộ hoá

    • Các API mới dành cho các bộ điều hợp đồng bộ hoá để kết nối với bất kỳ phần phụ trợ nào

    Người quản lý tài khoản

    • API trình quản lý tài khoản tập trung để lưu trữ và truy cập an toàn mã thông báo/mật khẩu xác thực

    Danh bạ

    • API danh bạ mới cho phép lấy dữ liệu từ nhiều tài khoản
    • API khung Liên hệ nhanh mới cho phép nhà phát triển tạo huy hiệu liên hệ trong ứng dụng của họ. Khi bạn nhấp vào huy hiệu, một cửa sổ sẽ mở ra danh sách các cách để liên hệ với người đó chỉ bằng một cú nhấp chuột.

    WebView

    • Các lớp không dùng nữa: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.

    Camera

    • Các thông số mới cho hiệu ứng màu, chế độ cảnh, chế độ flash, chế độ lấy nét, cân bằng trắng, xoay và các chế độ cài đặt khác.
    • Giao diện ZoomCallback mới để thực hiện các thao tác khi mức thu phóng thay đổi.

    Nội dung nghe nhìn

    • Giờ đây, MediaScanner tạo hình thu nhỏ cho tất cả hình ảnh khi chúng được chèn vào MediaStore.
    • API hình thu nhỏ mới để truy xuất hình thu nhỏ của hình ảnh và video theo yêu cầu.

    Khung khác

    • Các giao diện hệ thống mới trong android.R.style giúp dễ dàng hiển thị các hoạt động ở đầu hình nền hệ thống hiện tại hoặc hiển thị hoạt động trước đó ở chế độ nền.
    • API WallpaperManager mới thay thế và mở rộng các API hình nền trước đây trong Context, cho phép các ứng dụng yêu cầu và đặt hình nền hệ thống.
    • API Dịch vụ mới giúp các ứng dụng xử lý chính xác vòng đời của Dịch vụ, cụ thể là các trường hợp dung lượng bộ nhớ thấp khi Dịch vụ có thể bị tắt trong khi đang chạy.
      • Service.setForeground() đã ngừng hoạt động và hiện không thực hiện được thao tác nào một cách hiệu quả. Phương thức này được thay thế bằng một API mới, startForeground(), giúp (và yêu cầu) liên kết một thông báo đang diễn ra với trạng thái nền trước.
    • Giờ đây, MotionEvent có thể báo cáo thông tin về thao tác chạm đồng thời cho các thiết bị hỗ trợ thao tác này. Bạn có thể theo dõi đồng thời tối đa 3 con trỏ.
    • KeyEvent có các API điều phối phím mới để giúp triển khai thao tác bật lên và thao tác nhấn và giữ, cũng như cơ chế mới để huỷ thao tác nhấn phím (đối với phím ảo).
    • WindowManager.LayoutParams có các hằng số mới cho phép cửa sổ đánh thức màn hình khi hiển thị và hiển thị cửa sổ ngay cả khi màn hình bị khoá. Điều này cho phép các ứng dụng triển khai những tính năng như đồng hồ báo thức để đánh thức thiết bị một cách rõ ràng hơn.
    • Các API Ý định mới truyền trạng thái kết nối của thiết bị và cho phép các ứng dụng chạy các hoạt động đặc biệt khi thiết bị được đặt trên máy tính để bàn hoặc đế cắm ô tô.

    Các sự kiện chính được thực thi khi thiết lập khoá

    Android 2.0 được thiết kế để chạy trên các thiết bị sử dụng các phím ảo cho Màn hình chính, Trình đơn, QUAY LẠI và TÌM KIẾM, thay vì các phím vật lý. Để hỗ trợ trải nghiệm người dùng tốt nhất trên các thiết bị đó, nền tảng Android hiện thực thi các nút này ở trạng thái nhả phím, cho một cặp phím nhấn/nhả phím, thay vì nhấn phím. Điều này giúp ngăn chặn các sự kiện nút do vô tình và cho phép người dùng nhấn vào khu vực nút rồi kéo ra khỏi khu vực đó mà không tạo ra sự kiện.

    Thay đổi về hành vi này sẽ chỉ ảnh hưởng đến ứng dụng của bạn nếu ứng dụng đó chặn các sự kiện nút và thực hiện thao tác khi nhấn phím, thay vì khi nhấn phím. Đặc biệt, nếu ứng dụng của bạn đang chặn phím BACK (QUAY LẠI), bạn nên đảm bảo rằng ứng dụng của mình đang xử lý các sự kiện chính đúng cách.

    Nhìn chung, bạn không nên chặn phím BACK trong ứng dụng. Tuy nhiên, nếu ứng dụng đang làm vậy và ứng dụng sẽ gọi một số thao tác khi nhấn phím xuống thay vì nhấn phím, thì bạn nên sửa đổi mã của mình.

    Nếu ứng dụng của bạn sẽ sử dụng các API được giới thiệu trong Android 2.0 (API cấp 5), bạn có thể tận dụng các API mới để quản lý các cặp sự kiện-khoá:

    • Nếu bạn đang chặn phím BACK trong một hoạt động hoặc hộp thoại, chỉ cần triển khai phương thức onBackPressed() mới.
    • Nếu đang chặn phím QUAY LẠI trong một khung hiển thị, bạn nên theo dõi sự kiện phím khi nhấn phím xuống (thông qua phương thức startTracking() mới), sau đó gọi thao tác khi nhấn phím lên. Dưới đây là một mẫu bạn có thể sử dụng:
    • 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);
          }
      

    Nếu muốn cập nhật một ứng dụng cũ để việc xử lý phím BACK hoạt động đúng cách cho cả Android 2.0 và các phiên bản nền tảng cũ hơn, bạn có thể sử dụng phương pháp tương tự như trên. Mã của bạn có thể phát hiện sự kiện nút mục tiêu khi nhấn phím, đặt cờ để theo dõi sự kiện nhấn phím, sau đó cũng phát hiện sự kiện khi nhả phím, thực thi hành động mong muốn nếu bạn đặt cờ theo dõi. Bạn cũng nên theo dõi các thay đổi về tiêu điểm và xoá cờ theo dõi khi tăng/mất tiêu điểm.

    Báo cáo sự khác biệt về API

    Để biết thông tin chi tiết về những thay đổi đối với API trong Android 2.0 (API cấp 5), so với phiên bản trước đó, hãy xem phần Báo cáo khác biệt về API.