API Android 3.2

Cấp độ API: 13

Android 3.2 (HONEYCOMB_MR2) là một bản phát hành nền tảng gia tăng bổ sung tính năng mới cho người dùng và nhà phát triển. Các phần dưới đây cung cấp thông tin tổng quan về các tính năng mới và API dành cho nhà phát triển.

Đối với các nhà phát triển, nền tảng Android 3.2 được cung cấp dưới dạng 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 tập hợp giao diện trình mô phỏng và khác. Để bắt đầu phát triển hoặc thử nghiệm trên Android 3.2, sử dụng Trình quản lý SDK Android để tải nền tảng xuống SDK của bạn.

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

Tính năng mới dành cho người dùng

  • Tối ưu hoá cho nhiều loại máy tính bảng

    Android 3.2 cung cấp nhiều tính năng tối ưu hoá trên toàn bộ hệ thống nhằm đảm bảo mang lại trải nghiệm tuyệt vời cho người dùng trên nhiều loại thiết bị máy tính bảng.

  • Khả năng tương thích thu phóng cho các ứng dụng có kích thước cố định

    Android 3.2 giới thiệu chế độ thu phóng khả năng tương thích mới giúp một cách mới để xem các ứng dụng có kích thước cố định trên các thiết bị lớn hơn. Chế độ mới cung cấp thay thế được điều chỉnh theo tỷ lệ pixel so với giao diện người dùng tiêu chuẩn kéo dài cho các ứng dụng không được thiết kế để chạy trên kích thước màn hình lớn hơn, chẳng hạn như trên máy tính bảng. Chế độ mới là mà người dùng có thể truy cập từ biểu tượng trình đơn trên thanh hệ thống cho những ứng dụng cần Google Cloud.

  • Đồng bộ hoá nội dung nghe nhìn từ thẻ SD

    Trên những thiết bị hỗ trợ thẻ SD, giờ đây, người dùng có thể tải trực tiếp các tệp đa phương tiện từ thẻ SD sang các ứng dụng dùng thẻ nhớ. Một thành phần của hệ thống tạo các tệp mà các ứng dụng trong kho nội dung nghe nhìn của hệ thống có thể truy cập.

Các tính năng mới dành cho nhà phát triển

  • Hỗ trợ API mở rộng để quản lý màn hình

    Android 3.2 giới thiệu các tiện ích mở rộng cho API hỗ trợ màn hình của nền tảng để cung cấp cho nhà phát triển những cách bổ sung để quản lý giao diện người dùng ứng dụng trên nhiều Thiết bị hỗ trợ Android. API này bao gồm những bộ hạn định tài nguyên mới và các thuộc tính tệp kê khai cho phép bạn kiểm soát chính xác hơn cách ứng dụng được hiển thị trên nhiều kích thước khác nhau thay vì dựa vào các ứng dụng tổng quát danh mục kích thước.

    Để đảm bảo hiển thị tốt nhất có thể cho các ứng dụng có kích thước cố định và các ứng dụng bị hạn chế hỗ trợ nhiều kích thước màn hình, nền tảng cũng cung cấp tính năng thu phóng mới chế độ tương thích kết xuất giao diện người dùng trên một khu vực màn hình nhỏ hơn, sau đó điều chỉnh tỷ lệ để lấp đầy không gian có sẵn trên màn hình. Để biết thêm thông tin về Screen support API và các chế độ kiểm soát mà API này cung cấp, hãy xem các phần bên dưới.

Tổng quan về API

API hỗ trợ màn hình

Android 3.2 ra mắt các API hỗ trợ màn hình mới mang lại cho bạn nhiều khả năng hơn kiểm soát cách ứng dụng hiển thị trên nhiều kích thước màn hình. API này được xây dựng dựa trên API hỗ trợ màn hình hiện có, bao gồm mô hình mật độ màn hình tổng quát, nhưng mở rộng với khả năng nhắm mục tiêu đến các phạm vi màn hình cụ thể theo kích thước, được đo bằng đơn vị pixel không phụ thuộc vào mật độ (chẳng hạn như rộng 600dp hoặc 720dp), thay vì theo kích thước màn hình khái quát (chẳng hạn như lớn hoặc rất lớn)

Khi thiết kế giao diện người dùng của ứng dụng, bạn vẫn có thể dựa vào nền tảng để cung cấp trừu tượng về mật độ, tức là các ứng dụng không cần bù cho sự khác biệt về mật độ pixel thực tế trên các thiết bị. Bạn có thể thiết kế giao diện người dùng của ứng dụng theo mức độ ngang hoặc dọc dung lượng còn trống. Nền tảng này thể hiện lượng không gian có sẵn bằng cách sử dụng đặc điểm: smallestWidth, widthheight (chiều cao).

  • smallestWidth của màn hình là kích thước tối thiểu cơ bản, được đo bằng đơn vị pixel không phụ thuộc vào mật độ ("dp"). Chiều cao của màn hình hoặc chiều rộng, thì đó là chiều rộng ngắn hơn. Đối với màn hình theo hướng dọc, nhỏ nhất chiều rộng thường dựa trên chiều rộng, trong khi theo hướng ngang, giá trị này được dựa trên trên chiều cao. Trong mọi trường hợp, chiều rộng nhỏ nhất được tính từ đặc tính cố định của màn hình và giá trị không thay đổi, bất kể hướng. Chiều rộng nhỏ nhất rất quan trọng cho các ứng dụng vì nó thể hiện chiều rộng ngắn nhất có thể trong đó giao diện người dùng của ứng dụng sẽ cần được vẽ, không bao gồm các khu vực trên màn hình đặt trước bởi hệ thống.
  • Ngược lại, chiều rộngchiều cao của màn hình đại diện cho không gian theo chiều ngang hoặc chiều dọc hiện tại có sẵn cho bố cục ứng dụng, được đo bằng "dp" đơn vị quảng cáo, không bao gồm khu vực màn hình được hệ thống đặt trước. Chiều rộng và chiều cao của màn hình thay đổi khi người dùng chuyển đổi hướng giữa màn hình ngang và dọc.

API hỗ trợ màn hình mới được thiết kế để cho phép bạn quản lý giao diện người dùng của ứng dụng theo chiều rộng nhỏ nhất của màn hình hiện tại. Bạn cũng có thể quản lý Giao diện người dùng theo chiều rộng hoặc chiều cao hiện tại, nếu cần. Với những mục đích đó, API cung cấp các công cụ sau:

  • Bộ hạn định tài nguyên mới cho bố cục nhắm mục tiêu và các tài nguyên khác cho một chiều rộng, chiều rộng hoặc chiều cao tối thiểu nhỏ nhất và
  • Thuộc tính tệp kê khai mới, để chỉ định giá trị tối đa của ứng dụng phạm vi tương thích màn hình

Ngoài ra, các ứng dụng vẫn có thể truy vấn hệ thống cũng như quản lý giao diện người dùng và tải tài nguyên trong thời gian chạy, như trong các phiên bản trước của nền tảng.

Vì API mới này cho phép bạn nhắm mục tiêu các màn hình trực tiếp thông qua SmallWidth, chiều rộng và chiều cao, sẽ rất hữu ích nếu bạn hiểu đặc điểm của các loại màn hình khác nhau. Bảng dưới đây cung cấp một số ví dụ, được đo bằng "dp" đơn vị.

Bảng 1. Thiết bị thông thường, với mật độ và kích thước tính theo dp.

Loại Mật độ (tổng quát) Kích thước (dp) nhỏ nhất rộng (dp)
Số điện thoại cơ sở mdpi 320x480 320
Máy tính bảng nhỏ/điện thoại lớn mdpi 480x800 480
máy tính bảng 7 inch mdpi 600x1024 600
máy tính bảng 10 inch mdpi 800x1280 800

Các phần dưới đây cung cấp thêm thông tin về các bộ hạn định màn hình mới và tệp kê khai. Để có thông tin đầy đủ về cách sử dụng màn hình hỗ trợ API, hãy xem phần Hỗ trợ nhiều Màn hình.

Hỗ trợ bộ hạn định tài nguyên mới cho màn hình

Bộ hạn định tài nguyên mới trong Android 3.2 cho phép bạn nhắm mục tiêu bố cục tốt hơn cho nhiều kích thước màn hình. Bằng cách sử dụng bộ hạn định, bạn có thể tạo tài nguyên các cấu hình được thiết kế cho chiều rộng nhỏ nhất, chiều rộng tối thiểu cụ thể hoặc chiều cao hiện tại, được đo bằng pixel không phụ thuộc vào mật độ.

Các bộ hạn định mới là:

  • swNNNdp – Chỉ định chiều rộng nhỏ nhất tối thiểu mà tài nguyên sẽ được sử dụng, được đo bằng "dp" đơn vị. Như đã đề cập ở trên, việc nhỏ nhất của màn hình là không đổi, bất kể hướng. Ví dụ: sw320dp, sw720dp, sw720dp.
  • wNNNdphNNNdp – Chỉ định giá trị tối thiểu chiều rộng hoặc chiều cao mà tài nguyên sẽ được sử dụng, được đo bằng "dp" đơn vị. Như được đề cập ở trên, chiều rộng và chiều cao của màn hình tương ứng với hướng của màn hình và thay đổi bất cứ khi nào hướng thay đổi. Ví dụ: w320dp, w720dp, h1024dp.

Bạn cũng có thể tạo nhiều cấu hình tài nguyên chồng chéo nếu cần. Ví dụ: bạn có thể gắn thẻ một số tài nguyên để sử dụng trên bất kỳ màn hình nào rộng hơn 480 dp, các chỉ số khác cho lớn hơn 600 dp và các chỉ số khác cho rộng hơn 720 dp. Thời gian nhiều cấu hình tài nguyên đủ điều kiện cho một màn hình nhất định, hệ thống sẽ chọn cấu hình phù hợp nhất. Để điều khiển chính xác đối với tài nguyên nào được tải trên một màn hình nhất định, bạn có thể gắn thẻ các tài nguyên bằng một bộ hạn định hoặc kết hợp một số bộ hạn định mới hoặc hiện có.

Dựa trên các phương diện điển hình được liệt kê trước đó, sau đây là một số ví dụ về cách bạn có thể sử dụng bộ hạn định mới:

res/layout/main_activity.xml   # For phones
res/layout-sw600dp/main_activity.xml   # For 7” tablets
res/layout-sw720dp/main_activity.xml   # For 10” tablets
res/layout-w600dp/main_activity.xml   # Multi-pane when enough width
res/layout-sw600dp-w720dp/main_activity.xml   # For large width

Các phiên bản cũ hơn của nền tảng sẽ bỏ qua những bộ hạn định mới, vì vậy bạn có thể hãy kết hợp chúng nếu cần để đảm bảo rằng ứng dụng của bạn trông đẹp mắt trên mọi thiết bị. Ở đây là một số ví dụ:

res/layout/main_activity.xml   # For phones
res/layout-xlarge/main_activity.xml   # For pre-3.2 tablets
res/layout-sw600dp/main_activity.xml   # For 3.2 and up tablets

Để biết thông tin đầy đủ về cách sử dụng bộ hạn định mới, hãy xem phần Sử dụng bộ hạn định mới bộ hạn định kích thước.

Thuộc tính tệp kê khai mới để tương thích với kích thước màn hình

Khung này cung cấp một bộ thuộc tính tệp kê khai <supports-screens> mới cho phép bạn quản lý việc hỗ trợ ứng dụng cho nhiều kích thước màn hình. Cụ thể, bạn có thể chỉ định màn hình lớn nhất và nhỏ nhất mà ứng dụng trên đó được thiết kế để chạy, cũng như màn hình lớn nhất mà chương trình được thiết kế chạy mà không cần màn hình mới của hệ thống chế độ tương thích. Giống như bộ hạn định tài nguyên được mô tả ở trên, thuộc tính mới thuộc tính tệp kê khai chỉ định phạm vi màn hình mà ứng dụng hỗ trợ, như được chỉ định bởi preventWidth (chiều rộng nhỏ nhất).

Dưới đây là các thuộc tính tệp kê khai mới để hỗ trợ màn hình:

  • android:compatibleWidthLimitDp="numDp" — Đây cho phép bạn chỉ định chiều rộng nhỏ nhất tối đa mà ứng dụng có thể chạy mà không cần chế độ tương thích. Nếu màn hình hiện tại lớn hơn giá trị được chỉ định, hệ thống sẽ hiển thị ứng dụng ở chế độ thông thường nhưng cho phép người dùng tuỳ ý chuyển sang chế độ tương thích thông qua một chế độ cài đặt trong thanh hệ thống.
  • android:largestWidthLimitDp="numDp" — Đây cho phép bạn chỉ định chiều rộng nhỏ nhất tối đa mà ứng dụng được thiết kế để chạy. Nếu màn hình hiện tại lớn hơn giá trị được chỉ định, hệ thống buộc ứng dụng chuyển sang chế độ tương thích màn hình để đảm bảo tốt nhất hiển thị trên màn hình hiện tại.
  • android:requiresSmallestWidthDp="numDp" — Đây cho phép bạn chỉ định chiều rộng nhỏ nhất nhỏ nhất mà ứng dụng có thể chạy. Nếu màn hình hiện tại nhỏ hơn giá trị được chỉ định, hệ thống coi ứng dụng không tương thích với thiết bị, nhưng không ngăn ứng dụng đó cài đặt và chạy.

Lưu ý: Google Play hiện không lọc dựa trên bất kỳ thuộc tính nào nêu trên. Hỗ trợ lọc sẽ là được thêm vào bản phát hành nền tảng sau này. Ứng dụng yêu cầu có thể sử dụng <supports-screens> hiện có để lọc dựa trên kích thước màn hình .

Để biết đầy đủ thông tin về cách sử dụng các thuộc tính mới, hãy xem phần Khai báo kích thước màn hình.

Chế độ tương thích màn hình

Android 3.2 cung cấp chế độ tương thích màn hình mới cho các ứng dụng tuyên bố rõ ràng rằng chúng không hỗ trợ các màn hình lớn như màn hình trên mà chúng đang chạy. Tính năng "thu phóng" mới này được điều chỉnh theo tỷ lệ pixel hiển thị ứng dụng trong một khu vực màn hình nhỏ hơn rồi điều chỉnh tỷ lệ pixel thành lấp đầy màn hình hiện tại.

Theo mặc định, hệ thống sẽ cung cấp chế độ tương thích màn hình dưới dạng tuỳ chọn cho người dùng, đối với các ứng dụng yêu cầu mã đó. Người dùng có thể bật và tắt chế độ thu phóng bằng cách sử dụng nút điều khiển có sẵn trong thanh hệ thống.

Do chế độ tương thích màn hình mới có thể không phù hợp với tất cả mọi người các ứng dụng, nền tảng sẽ cho phép ứng dụng tắt nó bằng cách sử dụng tệp kê khai . Khi bị ứng dụng tắt, hệ thống sẽ không cung cấp tính năng "thu phóng" khả năng tương thích dưới dạng một tuỳ chọn cho người dùng khi ứng dụng đang chạy.

Lưu ý: Để biết thông tin quan trọng về cách để kiểm soát chế độ tương thích trong các ứng dụng của bạn, vui lòng xem bài viết Chế độ mới dành cho ứng dụng trên màn hình lớn trên Android Blog dành cho nhà phát triển.

Mật độ màn hình mới cho TV 720p và các thiết bị tương tự

Để đáp ứng nhu cầu của các ứng dụng chạy trên TV 720p hoặc tương tự với màn hình có mật độ trung bình, Android 3.2 giới thiệu một mật độ tổng quát mới, tvdpi, với dpi gần đúng là 213. Các ứng dụng có thể truy vấn mật độ mới trong densityDpi và có thể sử dụng bộ hạn định tvdpi mới để gắn thẻ tài nguyên cho truyền hình và các thiết bị tương tự. Ví dụ:

res/drawable-tvdpi/my_icon.png   # Bitmap for tv density

Nhìn chung, các ứng dụng không cần phải xử lý mật độ này. Cho các tình huống trong đó cần có đầu ra cho màn hình 720p, bạn có thể điều chỉnh các phần tử trên giao diện người dùng tự động theo nền tảng.

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

  • Mảnh
    • Lớp Fragment.SavedState mới lưu giữ trạng thái thông tin được truy xuất từ thực thể mảnh thông qua saveFragmentInstanceState()
    • Phương thức mới saveFragmentInstanceState() lưu trạng thái của thực thể hiện tại của Mảnh đã cho. Bạn có thể dùng trạng thái này sau khi tạo một thực thể mới của Mảnh phù hợp với trạng thái hiện tại.
    • Phương thức mới setInitialSavedState() đặt trạng thái đã lưu ban đầu cho một Mảnh khi được tạo lần đầu tiên.
    • Phương thức gọi lại onViewCreated() mới sẽ thông báo cho Fragment rằng onCreateView() được trả về, nhưng trước khi bất kỳ trạng thái đã lưu nào được khôi phục trong Chế độ xem.
    • Phương thức isDetached() xác định liệu Mảnh đã được tách khỏi giao diện người dùng một cách rõ ràng.
    • attach() mới và detach() cho phép ứng dụng đính kèm lại hoặc tách rời các mảnh trong giao diện người dùng.
    • Phương thức nạp chồng setCustomAnimations() mới cho phép bạn đặt ảnh động cụ thể để chạy các tác vụ nhập/thoát và đặc biệt là khi bật ngăn xếp lui. Triển khai hiện tại không tính đến về hành vi khác nhau của các mảnh khi đẩy ngăn xếp lui.
  • Thông tin về kích thước màn hình trong ActivityInfo và ApplicationInfo
  • Trình trợ giúp để nhận thông tin về kích thước hiển thị qua WindowManager
    • Các phương thức mới getSize()getRectSize() cho phép các ứng dụng có được kích thước thô của màn hình.
  • "Ảnh ba chiều" công khai mới phong cách
    • Giờ đây, nền tảng này hiển thị nhiều ảnh "ba ảnh" công khai phong cách cho văn bản, tiện ích thanh tác vụ và các tab, v.v. Xem Hãy R.style để xem danh sách đầy đủ.
  • LocalActivityManager, ActivityGroupLocalActivityManager hiện không dùng nữa
    • Các ứng dụng mới sẽ sử dụng Mảnh thay vì các lớp này. Người nhận tiếp tục chạy trên các phiên bản cũ hơn của nền tảng, bạn có thể sử dụng Thư viện (thư viện khả năng tương thích), có trong SDK Android. Tính năng hỗ trợ phiên bản 4 Thư viện cung cấp phiên bản Fragment API tương thích với Android 1.6 (API cấp 4).
    • Đối với ứng dụng phát triển dựa trên Android 3.0 (cấp độ API) 11) trở lên, thẻ thường được hiển thị trong giao diện người dùng bằng cách sử dụng ActionBar.newTab() và các API có liên quan để đặt thẻ trong khu vực thanh tác vụ.

Khung nội dung đa phương tiện

  • Các ứng dụng sử dụng nhà cung cấp nội dung đa phương tiện của nền tảng (MediaStore) hiện có thể đọc dữ liệu đa phương tiện trực tiếp từ thẻ SD có thể tháo rời, nếu được thiết bị hỗ trợ. Ứng dụng cũng có thể tương tác trực tiếp với các tệp trên thẻ SD bằng API MTP.

Đồ hoạ

khung IME

  • Phương thức getModifiers() mới cho truy xuất trạng thái hiện tại của các phím bổ trợ.

khung USB

  • Phương thức getRawDescriptors() mới cho truy xuất trình mô tả USB thô cho thiết bị. Bạn có thể sử dụng để truy cập vào phần mô tả không được hỗ trợ trực tiếp thông qua cấp độ.

Mạng

Điện thoại

Phần mềm tiện ích cốt lõi

  • Tiện ích theo gói
  • Binder và IBinder
    • Phương thức mới dumpAsync() trong BinderIBinder cho phép các ứng dụng kết xuất vào một tệp được chỉ định, đảm bảo rằng mục tiêu thực thi không đồng bộ.
    • Mã giao dịch IBinder mới (TWEET_TRANSACTION) cho phép các ứng dụng gửi tweet với đối tượng mục tiêu.

Hằng số tính năng mới

Nền tảng này sẽ thêm các hằng số mới của tính năng phần cứng mà bạn có thể khai báo trong tệp kê khai ứng dụng của chúng, để thông báo cho các pháp nhân bên ngoài như Google Chơi các tính năng phần cứng và phần mềm cần thiết. Bạn khai báo các và các hằng số tính năng khác trong phần tử tệp kê khai <uses-feature>.

Google Play lọc ứng dụng dựa trên thuộc tính <uses-feature> để đảm bảo rằng các ứng dụng đó chỉ được cung cấp cho những thiết bị đáp ứng các yêu cầu của ứng dụng.

  • Hằng số tính năng cho các yêu cầu theo chiều ngang hoặc chiều dọc

    Android 3.2 giới thiệu các hằng số tính năng mới cho phép các ứng dụng chỉ định việc chúng yêu cầu hiển thị theo hướng ngang, dọc hay cả hai. Việc khai báo các hằng số này cho biết không được cài đặt ứng dụng trên thiết bị không cung cấp hướng được liên kết. Ngược lại, nếu một hoặc cả hai hằng số không được khai báo, điều đó cho biết ứng dụng không có lựa chọn ưu tiên cho các hướng chưa được khai báo và có thể được cài đặt trên một thiết bị không cung cấp các hướng đó.

    Thông thường, một ứng dụng điển hình hoạt động đúng cách ở cả hướng ngang và hướng dọc thường sẽ không cần khai báo yêu cầu về hướng. Thay vào đó, một ứng dụng được thiết kế chủ yếu cho một hướng (chẳng hạn như ứng dụng dành cho TV) có thể khai báo một trong các hằng số để đảm bảo ứng dụng đó không dùng được cho các thiết bị không cung cấp hướng đó.

    Nếu bất kỳ hoạt động nào được khai báo trong yêu cầu tệp kê khai mà chúng chạy ở một hướng cụ thể, bằng thuộc tính android:screenOrientation, thì thao tác này cũng khai báo rằng ứng dụng yêu cầu hướng đó.

  • Các hằng số tính năng khác

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

Để có cái nhìn chi tiết về tất cả thay đổi đối với API trong Android 3.2 (API Cấp độ 13), hãy xem API Báo cáo điểm khác biệt.

Cấp độ API:

Nền tảng Android 3.2 cung cấp phiên bản cập nhật của API khung. API Android 3.2 được gán một mã nhận dạng bằng số nguyên — 13 — tức là đượ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 để xác định chính xác xem một ứng dụng có tương thích với hệ thống trước khi cài đặt ứng dụng.

Để sử dụng các API được giới thiệu trong Android 3.2 trong ứng dụng của bạn, 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 3.2. Tuỳ thuộc vào nhu cầu, bạn nên có thể bạn cũng cần thêm một android:minSdkVersion="13" cho phần tử <uses-sdk> trong đơn đăng ký tệp kê khai.

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