API Android 2.3

Cấp độ API: 9

Đối với các nhà phát triển, nền tảng Android 2.3 (GINGERBREAD) 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 bao gồm thư viện Android và hình ảnh hệ thống, cũng như một bộ giao diện trình mô phỏng và nhiều nội dung khác. Để bắt đầu phát triển hoặc kiểm thử trên Android 2.3, hãy sử dụng Trình quản lý SDK Android để tải nền tảng này xuống SDK của bạn.

Tổng quan về API

Các phần dưới đây cung cấp tổng quan kỹ thuật về những tính năng mới dành cho nhà phát triển trong phiên bản 2.3, bao gồm các tính năng mới và các thay đổi về API khung kể từ phiên bản trước.

VoIP dựa trên SIP

Nền tảng này hiện có một ngăn xếp giao thức SIP và API khung cho phép nhà phát triển xây dựng các ứng dụng điện thoại Internet. Khi sử dụng API này, các ứng dụng có thể cung cấp tính năng gọi thoại mà không cần phải quản lý phiên hoạt động, giao tiếp ở cấp độ truyền tải hoặc âm thanh — những tính năng này sẽ được API và dịch vụ SIP của nền tảng xử lý một cách minh bạch.

API SIP có trong gói android.net.sip. Lớp khoá là SipManager mà các ứng dụng dùng để thiết lập và quản lý hồ sơ SIP, sau đó bắt đầu cuộc gọi âm thanh và nhận cuộc gọi thoại. Sau khi cuộc gọi âm thanh được thiết lập, các ứng dụng có thể tắt tiếng cuộc gọi, bật chế độ loa, gửi âm DTMF và làm nhiều việc khác. Các ứng dụng cũng có thể dùng SipManager để tạo các kết nối SIP chung.

Ngăn xếp và dịch vụ SIP cơ bản của nền tảng được cung cấp trên các thiết bị theo quyết định của nhà sản xuất và nhà mạng liên kết. Vì lý do này, ứng dụng nên sử dụng phương thức isApiSupported() để kiểm tra xem có hỗ trợ SIP hay không trước khi hiển thị chức năng gọi cho người dùng.

Để sử dụng API SIP, các ứng dụng phải yêu cầu người dùng cấp quyền bằng cách khai báo <uses-permission android:name="android.permission.INTERNET"><uses-permission android:name="android.permission.USE_SIP"> trong tệp kê khai.

Ngoài ra, nhà phát triển có thể yêu cầu lọc trên Google Play, sao cho những người dùng có thiết bị không có ngăn xếp SIP và dịch vụ của nền tảng sẽ không tìm thấy ứng dụng của họ. Để yêu cầu lọc, hãy thêm <uses-feature android:name="android.software.sip" android:required="true"><uses-feature android:name="android.software.sip.voip"> vào tệp kê khai ứng dụng.

Để biết thêm thông tin, hãy đọc hướng dẫn dành cho nhà phát triển SIP.

Giao tiếp phạm vi gần (NFC)

Android 2.3 bao gồm một API khung và ngăn xếp NFC cho phép nhà phát triển đọc các thẻ NDEF được phát hiện khi người dùng chạm vào thiết bị hỗ trợ NFC để gắn thẻ các phần tử được nhúng trong hình dán, áp phích thông minh và thậm chí cả các thiết bị khác.

Nền tảng này cung cấp các dịch vụ NFC cơ bản hoạt động với phần cứng của thiết bị để khám phá các thẻ khi các thẻ đó nằm trong phạm vi. Khi phát hiện một thẻ, nền tảng sẽ thông báo cho các ứng dụng bằng cách truyền đi một Ý định, thêm thông báo NDEF của thẻ vào Ý định dưới dạng bổ sung. Các ứng dụng có thể tạo bộ lọc Ý định để nhận dạng và xử lý các thẻ cũng như thông báo được nhắm mục tiêu. Ví dụ: sau khi nhận được thẻ theo Intent, các ứng dụng sẽ trích xuất thông báo NDEF, lưu trữ thông báo đó, thông báo cho người dùng hoặc xử lý thông báo theo cách khác.

API NFC có trong gói android.nfc. Các lớp chính là:

  • NfcAdapter đại diện cho phần cứng NFC trên thiết bị.
  • NdefMessage, đại diện cho thông báo dữ liệu NDEF, định dạng chuẩn mà trong đó "bản ghi" chứa dữ liệu được truyền giữa các thiết bị và thẻ. Ứng dụng có thể nhận những thông báo này từ Ý định ACTION_TAG_DISCOVERED.
  • NdefRecord, được phân phối trong NdefMessage, mô tả loại dữ liệu được chia sẻ và tự mang dữ liệu đó.

Hoạt động giao tiếp qua NFC dựa trên công nghệ không dây trong phần cứng của thiết bị, vì vậy, khả năng hỗ trợ các tính năng NFC của nền tảng trên các thiết bị cụ thể là do nhà sản xuất xác định. Để xác định việc hỗ trợ NFC trên thiết bị hiện tại, các ứng dụng có thể gọi isEnabled() để truy vấn NfcAdapter. Tuy nhiên, API NFC luôn có sẵn, bất kể khả năng hỗ trợ phần cứng cơ bản.

Để sử dụng API NFC, các ứng dụng phải yêu cầu người dùng cấp quyền bằng cách khai báo <uses-permission android:name="android.permission.NFC"> trong tệp kê khai.

Ngoài ra, nhà phát triển có thể yêu cầu lọc trên Google Play, sao cho người dùng có thiết bị không hỗ trợ NFC không tìm thấy ứng dụng của họ. Để yêu cầu lọc, hãy thêm <uses-feature android:name="android.hardware.nfc" android:required="true"> vào tệp kê khai của ứng dụng.

Để xem một ứng dụng mẫu sử dụng API NFC, hãy xem NFCdemo.

Con quay hồi chuyển và các cảm biến khác

Android 2.3 bổ sung tính năng hỗ trợ nền tảng và API cho một số loại cảm biến đọc mới — con quay hồi chuyển, vectơ xoay, gia tốc tuyến tính, trọng lực và khí áp kế. Các nhà phát triển có thể sử dụng kết quả đọc cảm biến mới để tạo các ứng dụng phản hồi nhanh chóng và trơn tru với những thay đổi chính xác về vị trí và chuyển động của thiết bị. API Cảm biến báo cáo con quay hồi chuyển và các thay đổi khác về cảm biến cho các ứng dụng quan tâm, cho dù những ứng dụng đó đang chạy trên khung ứng dụng hay trong mã gốc.

Xin lưu ý rằng tập hợp cảm biến phần cứng cụ thể có trên một thiết bị nhất định sẽ thay đổi theo quyết định của nhà sản xuất thiết bị.

Nhà phát triển có thể yêu cầu lọc trên Google Play, sao cho người dùng có thiết bị không có cảm biến con quay hồi chuyển không tìm thấy ứng dụng của họ. Để thực hiện việc này, hãy thêm <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"> vào tệp kê khai ứng dụng.

Để biết thông tin chi tiết về API, hãy xem Sensor.

Hỗ trợ nhiều camera

Giờ đây, các ứng dụng có thể dùng bất kỳ máy ảnh nào có sẵn trên thiết bị để chụp ảnh hoặc quay video. Camera cho phép các ứng dụng truy vấn số lượng máy ảnh có sẵn và đặc điểm riêng của từng máy ảnh.

  • Lớp Camera.CameraInfo mới lưu trữ các đặc điểm vị trí của máy ảnh (hướng, mặt trước hoặc mặt sau).
  • Các phương thức getNumberOfCameras()getCameraInfo() mới trong lớp Camera cho phép các ứng dụng truy vấn máy ảnh có sẵn và mở máy ảnh mà các ứng dụng đó cần.
  • Phương thức get() mới cho phép các ứng dụng truy xuất CamcorderProfile cho một máy ảnh cụ thể.
  • getJpegEncodingQualityParameter() mới cho phép các ứng dụng lấy mức chất lượng chụp ảnh tĩnh cho một máy ảnh cụ thể.

Để xem mã mẫu dùng để truy cập máy ảnh mặt trước, hãy xem CameraPreview.java trong ứng dụng mẫu Apidemos.

API Camera cũng bổ sung:

Hiệu ứng âm thanh có thể kết hợp

Khung nội dung đa phương tiện của nền tảng hỗ trợ thêm hiệu ứng âm thanh mới cho mỗi bản nhạc hoặc trên toàn nền tảng, bao gồm tăng âm trầm, ảo hoá tai nghe, cân bằng âm thanh và hiệu ứng dội lại.

Để xem mã mẫu cho hiệu ứng âm thanh, hãy xem AudioFxdemo.java trong ứng dụng mẫu Apidemos.

Khung nội dung đa phương tiện cũng bổ sung:

  • Hỗ trợ mới cho thẻ độ cao trong siêu dữ liệu EXIF cho các tệp JPEG. Phương thức getAltitude() mới của phương thức để truy xuất giá trị của thẻ độ cao EXIF.
  • Phương thức setOrientationHint() mới cho phép ứng dụng thông báo cho MediaRecorder hướng trong khi quay video.

Trình quản lý tải xuống

Nền tảng này có một dịch vụ hệ thống DownloadManager mới giúp xử lý các lượt tải xuống HTTP chạy trong thời gian dài. Các ứng dụng có thể yêu cầu URI được tải xuống một tệp đích cụ thể. DownloadManager sẽ tiến hành tải xuống trong nền, xử lý các hoạt động tương tác HTTP và thử tải lại xuống sau khi có lỗi hoặc qua các thay đổi về khả năng kết nối và khởi động lại hệ thống.

  • Các ứng dụng có thể lấy một thực thể của lớp DownloadManager bằng cách gọi getSystemService(String) và truyền DOWNLOAD_SERVICE. Các ứng dụng yêu cầu tải xuống qua API này phải đăng ký broadcast receiver cho ACTION_NOTIFICATION_CLICKED để xử lý đúng cách khi người dùng nhấp vào một tệp tải xuống đang chạy trong một thông báo hoặc từ giao diện người dùng Tải xuống.
  • Lớp DownloadManager.Request cho phép ứng dụng cung cấp tất cả thông tin cần thiết để yêu cầu một lượt tải xuống mới, chẳng hạn như URI yêu cầu và đích đến để tải xuống. URI yêu cầu là tham số bắt buộc duy nhất. Lưu ý rằng đích tải xuống mặc định là một ổ đĩa dùng chung. Trong đó, hệ thống có thể xoá tệp của bạn nếu cần giải phóng dung lượng để hệ thống sử dụng. Để lưu trữ liên tục tệp đã tải xuống, hãy chỉ định một đích tải xuống trong bộ nhớ ngoài (xem setDestinationUri(Uri)).
  • Lớp DownloadManager.Query cung cấp các phương thức cho phép truy vấn ứng dụng và lọc các tệp đã tải xuống đang hoạt động.

StrictMode

Để giúp nhà phát triển theo dõi và cải thiện hiệu suất của ứng dụng, nền tảng này cung cấp một tiện ích hệ thống mới có tên là StrictMode. Khi được triển khai trong một ứng dụng, StrictMode sẽ nắm bắt và thông báo cho nhà phát triển về hoạt động vô tình của ổ đĩa hoặc mạng có thể làm giảm hiệu suất của ứng dụng, chẳng hạn như hoạt động diễn ra trên luồng chính của ứng dụng (nơi nhận được các thao tác trên giao diện người dùng và các ảnh động cũng diễn ra). Nhà phát triển có thể đánh giá các vấn đề về mức sử dụng mạng và ổ đĩa xảy ra trong StrictMode, đồng thời khắc phục các vấn đề đó nếu cần, giúp luồng chính phản hồi nhanh hơn và ngăn hộp thoại ANR hiển thị cho người dùng.

  • StrictMode là lớp cốt lõi và là điểm tích hợp chính với hệ thống và máy ảo. Lớp này cung cấp các phương thức thuận tiện để quản lý các chính sách luồng và máy ảo áp dụng cho thực thể.
  • StrictMode.ThreadPolicyStrictMode.VmPolicy lưu giữ các chính sách mà bạn xác định và áp dụng cho các thực thể luồng và máy ảo.

Để biết thêm thông tin về cách sử dụng StrictMode để tối ưu hoá ứng dụng của bạn, hãy xem tài liệu về lớp và mã mẫu tại android.os.StrictMode.

Khung giao diện người dùng

  • Hỗ trợ cuộn quá mức
    • Hỗ trợ mới cho thao tác cuộn quá mức trong Khung hiển thị và Tiện ích. Trong Khung hiển thị, ứng dụng có thể bật/tắt hiệu ứng cuộn quá mức cho một khung hiển thị nhất định, đặt chế độ ghi đè, kiểm soát khoảng cách cuộn quá mức và xử lý kết quả của hoạt động cuộn quá mức.
    • Trong Tiện ích, các ứng dụng có thể kiểm soát các đặc điểm cuộn quá mức như ảnh động, springback và khoảng cách cuộn quá mức. Để biết thêm thông tin, hãy xem android.view.Viewandroid.widget.OverScroller.
    • ViewConfiguration cũng cung cấp các phương thức getScaledOverflingDistance()getScaledOverscrollDistance().
    • Các thuộc tính overScrollMode, overScrollFooteroverScrollHeader mới cho các phần tử <ListView>, để kiểm soát hành vi cuộn quá mức.
  • Hỗ trợ bộ lọc cảm ứng
    • Hỗ trợ mới cho tính năng lọc thao tác chạm, cho phép ứng dụng cải thiện tính bảo mật của những Khung hiển thị cung cấp quyền truy cập vào chức năng nhạy cảm. Ví dụ: tính năng lọc bằng cách chạm phù hợp để đảm bảo tính bảo mật cho các hành động của người dùng, chẳng hạn như cấp yêu cầu quyền, mua hàng hoặc nhấp vào quảng cáo. Để biết thông tin chi tiết, hãy xem tài liệu về lớp Thành phần hiển thị.
    • Thuộc tính filterTouchesWhenObscured mới cho các phần tử khung hiển thị. Thuộc tính này khai báo xem có chạm vào để lọc khi cửa sổ của khung hiển thị bị một cửa sổ khác che khuất hay không. Khi được đặt thành "true", khung hiển thị sẽ không nhận được các thao tác chạm bất cứ khi nào một thông báo ngắn, hộp thoại hoặc cửa sổ khác xuất hiện phía trên cửa sổ của khung hiển thị. Tham khảo Xem tài liệu bảo mật để biết thông tin chi tiết.

    Để xem mã mẫu cho tính năng lọc cảm ứng, hãy xem phần SecureView.java trong ứng dụng mẫu Apidemos.

  • Cải thiện tính năng quản lý sự kiện
    • Lớp cơ sở mới cho các sự kiện nhập, InputEvent. Lớp này cung cấp các phương thức cho phép ứng dụng xác định ý nghĩa của sự kiện, chẳng hạn như bằng cách truy vấn InputDevice mà từ đó sự kiện được tạo ra. KeyEventMotionEvent là các lớp con của InputEvent.
    • Lớp cơ sở mới cho thiết bị đầu vào, InputDevice. Lớp này lưu trữ thông tin về các chức năng của một thiết bị đầu vào cụ thể và cung cấp các phương thức cho phép các ứng dụng xác định cách diễn giải sự kiện từ một thiết bị đầu vào.
  • Cải thiện sự kiện chuyển động
    • API MotionEvent được mở rộng để bao gồm thông tin về "mã nhận dạng con trỏ", cho phép các ứng dụng theo dõi từng ngón tay khi chúng di chuyển lên và xuống. Lớp này thêm nhiều phương thức cho phép một ứng dụng hoạt động hiệu quả với các sự kiện chuyển động.
    • Hệ thống đầu vào hiện có logic để tạo các sự kiện chuyển động với thông tin mã nhận dạng con trỏ mới, tổng hợp các giá trị nhận dạng khi con trỏ mới bị ngừng. Hệ thống theo dõi riêng biệt nhiều mã nhận dạng con trỏ trong một sự kiện chuyển động và đảm bảo tính liên tục thích hợp của các con trỏ bằng cách đánh giá khoảng cách giữa tập hợp con trỏ cuối cùng và tập hợp con trỏ tiếp theo.
  • Các tuỳ chọn điều khiển lựa chọn văn bản
    • Phương thức setComposingRegion mới cho phép ứng dụng đánh dấu một vùng văn bản là soạn văn bản, giúp duy trì kiểu hiện tại. Phương thức getSelectedText trả về văn bản đã chọn cho ứng dụng. Các phương thức này có trong BaseInputConnection, InputConnectionInputConnectionWrapper.
    • Các thuộc tính textSelectHandle, textSelectHandleLeft, textSelectHandleRighttextSelectHandleWindowStyle mới cho <TextView> để tham chiếu các đối tượng có thể vẽ sẽ dùng để hiển thị vùng neo lựa chọn văn bản và kiểu cho cửa sổ vùng chứa.
  • Kiểm soát hoạt động
  • Kiểu biểu tượng và văn bản thông báo
  • Màn hình cực lớn

    Nền tảng này hiện hỗ trợ thêm các kích thước màn hình lớn, chẳng hạn như các kích thước có thể tìm thấy trên thiết bị máy tính bảng. Nhà phát triển có thể cho biết rằng ứng dụng của họ được thiết kế để hỗ trợ thêm kích thước màn hình lớn bằng cách thêm phần tử <supports screens ... android:xlargeScreens="true"> vào tệp kê khai. Các ứng dụng có thể dùng bộ hạn định tài nguyên mới là xlarge để gắn thẻ tài nguyên dành riêng cho các màn hình cực lớn. Để biết thông tin chi tiết về cách hỗ trợ các kích thước màn hình cực lớn và khác, hãy xem phần Hỗ trợ nhiều màn hình.

    Đồ hoạ

    Trình cung cấp nội dung

    • Lớp nhà cung cấp AlarmClock mới để đặt chuông báo hoặc xử lý chuông báo. Trình cung cấp này chứa Hành động theo ý định ACTION_SET_ALARM và các ứng dụng khác có thể dùng để bắt đầu một Hoạt động nhằm đặt chuông báo mới trong ứng dụng đồng hồ báo thức. Các ứng dụng muốn nhận Ý định SET_ALARM phải tạo một hoạt động yêu cầu quyền SET_ALARM. Các ứng dụng muốn tạo chuông báo mới phải sử dụng Context.startActivity() để người dùng có thể chọn ứng dụng đồng hồ báo thức sẽ dùng.
    • MediaStore hỗ trợ thao tác có ý định mới (Intent) PLAY_FROM_SEARCH, cho phép ứng dụng tìm kiếm nội dung nghe nhạc và tự động phát nội dung từ kết quả đó khi có thể. Ví dụ: một ứng dụng có thể kích hoạt Ý định này nhờ lệnh nhận dạng giọng nói để nghe nhạc.
    • MediaStore cũng thêm một cờ MEDIA_IGNORE_FILENAME mới để yêu cầu trình quét nội dung nghe nhìn bỏ qua nội dung nghe nhìn trong thư mục chứa và các thư mục con của thư mục đó. Nhà phát triển có thể sử dụng tính năng này để tránh việc hình ảnh xuất hiện trong Thư viện, đồng thời ngăn âm thanh và nhạc của ứng dụng xuất hiện trong ứng dụng Music.
    • Trình cung cấp Settings thêm các thao tác Hoạt động mới APPLICATION_DETAILS_SETTINGSMANAGE_ALL_APPLICATIONS_SETTINGS, cho phép ứng dụng hiển thị màn hình chi tiết về một ứng dụng cụ thể hoặc hiển thị màn hình Quản lý ứng dụng.
    • Nhà cung cấp ContactsContract thêm loại dữ liệu ContactsContract.CommonDataKinds.SipAddress để lưu trữ địa chỉ SIP (điện thoại Internet) của một người liên hệ.

    Vị trí

    • LocationManager nay theo dõi các yêu cầu của ứng dụng dẫn đến việc khoá chế độ thức hoặc khoá Wi-Fi theo WorkSource (một lớp do hệ thống quản lý để xác định ứng dụng).

      LocationManager theo dõi tất cả ứng dụng yêu cầu cập nhật định kỳ và cho các nhà cung cấp biết về các ứng dụng này dưới dạng tham số WorkSource khi đặt thời gian cập nhật tối thiểu. Trình cung cấp vị trí mạng sử dụng WorkSource để theo dõi các lượt khoá chế độ thức và Wi-Fi do một ứng dụng khởi tạo và thêm vào mức sử dụng pin của ứng dụng được báo cáo trong phần Quản lý ứng dụng.

    • LocationManager thêm một số phương thức mới cho phép đăng ký Hoạt động nhận thông tin cập nhật vị trí định kỳ hoặc một lần dựa trên các tiêu chí đã chỉ định (xem bên dưới).
    • Một lớp Criteria mới cho phép ứng dụng chỉ định một nhóm tiêu chí để chọn trình cung cấp vị trí. Ví dụ: nhà cung cấp có thể được sắp xếp theo độ chính xác, mức sử dụng năng lượng, khả năng báo cáo độ cao, tốc độ, góc phương tiện và chi phí tiền tệ.

    Lưu trữ

    • Android 2.3 thêm một StorageManager mới hỗ trợ các tệp OBB (Opaque Binary Blob). Mặc dù Android 2.3 chỉ hỗ trợ nền tảng cho OBB, nhưng đến đầu năm 2011, các công cụ phát triển để tạo và quản lý tệp OBB mới được hỗ trợ.
    • Nền tảng Android 2.3 bổ sung tính năng hỗ trợ chính thức cho các thiết bị không chứa thẻ SD (mặc dù nền tảng này cung cấp phân vùng Thẻ SD ảo khi không có thẻ SD thực). Một phương thức tiện lợi là isExternalStorageRemovable() cho phép các ứng dụng xác định xem có thẻ SD vật lý hay không.

    Trình quản lý gói

    • Hằng số mới để khai báo tính năng phần cứng và phần mềm. Xem danh sách trong phần New Feature Constants (Hằng số tính năng mới) bên dưới.
    • PackageInfo thêm các trường firstInstallTimelastUpdateTime mới để lưu trữ thời gian cài đặt gói và cập nhật lần gần đây nhất.
    • Phương thức getProviderInfo() mới để truy xuất tất cả thông tin đã biết về một lớp nhà cung cấp nội dung cụ thể.

    Điện thoại

    Quyền truy cập gốc vào Vòng đời hoạt động, cửa sổ

    Android 2.3 hiển thị một loạt API cho các ứng dụng dùng mã gốc. Các loại khung mà các ứng dụng như vậy quan tâm bao gồm:

    • NativeActivity là một loại mới của lớp Hoạt động, có các lệnh gọi lại trong vòng đời được triển khai trực tiếp trong mã gốc. NativeActivity và mã gốc cơ bản chạy trong hệ thống giống như các Hoạt động khác. Cụ thể, chúng chạy trong quy trình hệ thống của ứng dụng Android và thực thi trên luồng giao diện người dùng chính của ứng dụng. Ngoài ra, chúng sẽ nhận được các phương thức gọi lại trong vòng đời giống như các Hoạt động khác.
    • Lớp InputQueue và giao diện gọi lại mới cho phép mã gốc quản lý việc thêm vào hàng đợi sự kiện.
    • Giao diện SurfaceHolder.Callback2 mới cho phép mã gốc quản lý SurfaceHolder.
    • Các phương thức takeInputQueuetakeSurface() mới trong Window cho phép mã gốc quản lý các sự kiện và nền tảng.

    Để biết đầy đủ thông tin về cách làm việc với mã gốc hoặc tải NDK xuống, hãy xem trang Android NDK.

    Thời gian chạy Dalvik

    Thuộc tính và phần tử tệp kê khai mới

    • Thuộc tính xlargeScreens mới cho phần tử <supports-screens>, để cho biết ứng dụng có hỗ trợ các hệ số hình dạng cho màn hình lớn hơn hay không. Để biết thông tin chi tiết, hãy xem phần Hỗ trợ nhiều màn hình.
    • Giá trị mới cho thuộc tính android:screenOrientation của phần tử <activity>:
      • "reverseLandscape" – Hoạt động muốn có màn hình ở hướng ngang, quay theo hướng ngược với hướng ngang thông thường.
      • "reversePortrait" – Hoạt động muốn có màn hình ở hướng dọc, xoay theo hướng ngược với hướng dọc thông thường.
      • "sensorLandscape" – Hoạt động muốn có màn hình theo hướng ngang, nhưng có thể sử dụng cảm biến để thay đổi hướng mà màn hình hướng về.
      • "sensorPortrait" – Hoạt động muốn có màn hình ở hướng dọc, nhưng có thể sử dụng cảm biến để thay đổi hướng mà màn hình hướng về.
      • "fullSensor" – Hướng được xác định bằng cảm biến hướng thực: màn hình sẽ xoay tuỳ theo cách người dùng di chuyển thiết bị. Điều này cho phép bất kỳ chế độ xoay nào trong số 4 chế độ xoay có thể áp dụng, bất kể thiết bị thường làm gì (ví dụ: một số thiết bị thường không sử dụng chế độ xoay 180 độ).

    Quyền mới

    • com.android.permission.SET_ALARM – Cho phép ứng dụng truyền đi một Ý định để đặt thông báo cho người dùng. Một Hoạt động xử lý thao tác theo Ý định SET_ALARM phải cần quyền này.
    • android.permission.USE_SIP – Cho phép ứng dụng dùng SIP API để thực hiện hoặc nhận cuộc gọi qua Internet.
    • android.permission.NFC – Cho phép ứng dụng dùng NFC API để đọc thẻ NFC.

    Hằng số đối tượng mới

    Nền tảng này bổ sung một số tính năng phần cứng mới mà nhà phát triển có thể khai báo trong tệp kê khai ứng dụng khi các ứng dụng của họ yêu cầu. Điều này cho phép nhà phát triển kiểm soát cách lọc ứng dụng khi ứng dụng được phát hành trên Google Play.

    Để biết thông tin đầy đủ về cách khai báo các tính năng và sử dụng các tính năng đó để lọc, hãy xem tài liệu về <uses-feature>.

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

    Để biết thông tin chi tiết về tất cả các thay đổi đối với API trong Android 2.3 (API cấp 9), hãy xem Báo cáo về sự khác biệt về API.

    Cấp độ API:

    Nền tảng Android 2.3 cung cấp phiên bản cập nhật của API khung. API Android 2.3 được chỉ định một giá trị nhận dạng số nguyên — 9 — đượ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 liệu ứ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.3 trong ứng dụng, bạn cần biên dịch ứng dụng dựa trên thư viện Android được cung cấp trong nền tảng SDK Android 2.3. Tuỳ thuộc vào nhu cầu của mình, bạn cũng có thể thêm thuộc tính android:minSdkVersion="9" vào phần tử <uses-sdk> trong tệp kê khai của ứng dụng. Nếu ứng dụng của bạn được thiết kế để chỉ chạy trên Android 2.3 trở lên, việc khai báo thuộc tính này sẽ ngăn cài đặt ứng dụng trên các phiên bản trước đó của nền tảng.

    Để biết thêm thông tin, hãy đọc bài viết Cấp độ API là gì?