Tổng quan về các tính năng và API

Android 12 mang đến cho nhà phát triển các tính năng và API mới tuyệt vời. Các phần dưới đây giúp bạn tìm hiểu các tính năng cho ứng dụng cũng như làm quen với các API liên quan.

Để biết danh sách chi tiết về các API mới, đã được sửa đổi, cũng như đã bị xoá, hãy đọc báo cáo điểm khác biệt về API. Để biết thông tin chi tiết về các API mới, hãy truy cập vào tài liệu tham khảo về API cho Android (các API mới được trình bày nổi bật). Ngoài ra, để tìm hiểu những thay đổi của nền tảng có thể tác động đến ứng dụng của bạn, hãy nhớ tham khảo các thay đổi về hành vi của Android 12 đối với ứng dụng nhắm đến Android 12tất cả ứng dụng.

Trải nghiệm người dùng

Material You

Android 12 giới thiệu một ngôn ngữ thiết kế mới có tên là Material You, giúp bạn tạo các ứng dụng đẹp mắt và mang đậm dấu ấn cá nhân hơn. Để đưa tất cả nội dung cập nhật mới nhất của Material Design 3 vào ứng dụng, hãy thử phiên bản alpha của Các thành phần Material Design.

Material You

Cải tiến tiện ích

Android 12 cải tiến API Tiện ích hiện có để cải thiện trải nghiệm người dùng và nhà phát triển trong nền tảng cũng như trình chạy. Chúng tôi đã tạo một hướng dẫn để giúp bạn đảm bảo tiện ích của mình tương thích với Android 12 và làm mới tiện ích bằng các tính năng mới.

Hãy xem bài viết Các điểm cải tiến về tiện ích trên Android 12 để biết thêm thông tin.

Chèn nội dung đa dạng thức

Android 12 giới thiệu một API hợp nhất mới cho phép ứng dụng của bạn nhận nội dung đa dạng thức từ mọi nguồn có sẵn: bảng nhớ tạm, bàn phím hoặc thao tác kéo và thả.

Để biết thêm thông tin, hãy xem phần Nhận nội dung đa dạng.

API màn hình chờ của ứng dụng

Android 12 giới thiệu một ảnh động mới khi khởi chạy ứng dụng cho tất cả ứng dụng, bao gồm chuyển động trong ứng dụng từ thời điểm khởi chạy, màn hình chờ hiển thị biểu tượng ứng dụng và chuyển đổi cho ứng dụng đó. Hãy xem hướng dẫn dành cho nhà phát triển về màn hình chờ để biết thêm thông tin chi tiết.

API góc bo tròn

Android 12 giới thiệu RoundedCornerWindowInsets.getRoundedCorner(int position), cung cấp bán kính và tâm điểm cho các góc bo tròn.

Để biết thêm thông tin, hãy xem phần Góc bo tròn.

Trải nghiệm xúc giác phong phú

Android 12 mở rộng các công cụ để tạo phản hồi xúc giác giàu thông tin cho các sự kiện trên giao diện người dùng, hiệu ứng sống động và thú vị cho trò chơi, cũng như phản hồi xúc giác thu hút sự chú ý để tăng năng suất.

Hiệu ứng bộ truyền động

Android 12 bổ sung các hiệu ứng biểu cảm như low_tick (rung nhẹ) tận dụng băng thông tần số rộng hơn của các bộ truyền động mới nhất. Giờ đây, các nhà phát triển trò chơi có thể truy cập độc lập vào nhiều bộ truyền động khác nhau trong bộ điều khiển trò chơi để mang lại hiệu ứng giống nhau một cách đồng bộ hoặc các hiệu ứng xúc giác khác nhau trên nhiều bộ truyền động. Đối với nhà phát triển, bạn nên sử dụng hằng sốnguyên hàm làm khối dựng cho các hiệu ứng xúc giác phong phú – hằng số để nâng cao các sự kiện trên giao diện người dùng và trình tạo hiệu ứng xúc giác để sắp xếp các nguyên hàm cho các hiệu ứng phức tạp hơn. Bạn có thể dùng thử các API này trên thiết bị Pixel 4 và chúng tôi vẫn đang tiếp tục hợp tác với các đối tác sản xuất thiết bị để mang đến cho người dùng trên toàn hệ sinh thái những tính năng mới nhất về khả năng hỗ trợ phản hồi xúc giác.

Hiệu ứng xúc giác kết hợp với âm thanh

Các ứng dụng Android 12 có thể tạo phản hồi xúc giác bắt nguồn từ một phiên âm thanh bằng cách sử dụng bộ rung của điện thoại. Điều này mang đến cơ hội trải nghiệm trò chơi và âm thanh chân thực hơn. Ví dụ: nhạc chuông có chế độ rung có thể giúp xác định người gọi, hoặc một trò chơi lái xe có thể mô phỏng cảm giác lái xe trên địa hình gồ ghề.

Hãy xem tài liệu tham khảo về HapticGenerator để biết thêm thông tin.

AppSearch

Android 12 giới thiệu AppSearch, một công cụ tìm kiếm hiệu suất cao trên thiết bị, dưới dạng một dịch vụ hệ thống. AppSearch cho phép các ứng dụng lập chỉ mục dữ liệu có cấu trúc và tìm kiếm trên dữ liệu đó bằng các chức năng tìm kiếm toàn bộ văn bản tích hợp sẵn. Ngoài ra, AppSearch còn hỗ trợ các tính năng tìm kiếm gốc, chẳng hạn như lập chỉ mục và truy xuất hiệu quả cao, hỗ trợ nhiều ngôn ngữ và xếp hạng mức độ liên quan.

Sơ đồ minh hoạ việc lập chỉ mục và tìm kiếm trong AppSearch

AppSearch có 2 loại: chỉ mục cục bộ để ứng dụng của bạn sử dụng (tương thích với các phiên bản Android cũ) hoặc chỉ mục trung tâm được duy trì cho toàn bộ hệ thống trong Android 12. Bằng cách sử dụng chỉ mục trung tâm, ứng dụng của bạn có thể cho phép dữ liệu của ứng dụng xuất hiện trên các nền tảng giao diện người dùng hệ thống thông qua thành phần thông minh được cài đặt sẵn của hệ thống. Chính xác những dữ liệu nào sẽ xuất hiện trên các giao diện người dùng hệ thống là tuỳ thuộc vào OEM. Ngoài ra, ứng dụng của bạn có thể chia sẻ dữ liệu một cách an toàn với các ứng dụng khác để cho phép các ứng dụng đó tìm kiếm trên dữ liệu đó.

Tìm hiểu thêm về AppSearch trong hướng dẫn dành cho nhà phát triển và bắt đầu sử dụng AppSearch bằng thư viện AppSearch Jetpack. Thư viện này cung cấp một giao diện API thân thiện với nhà phát triển cũng như hỗ trợ trình xử lý chú thích.

Chế độ trò chơi

Game Mode APIcác biện pháp can thiệp vào Chế độ trò chơi cho phép bạn tối ưu hoá lối chơi bằng cách sắp xếp mức độ ưu tiên cho các đặc điểm, chẳng hạn như hiệu suất hoặc thời lượng pin dựa trên chế độ cài đặt của người dùng hoặc cấu hình dành riêng cho trò chơi.

Để biết thêm thông tin, hãy xem phần Chế độ chơi trò chơi.

Đề xuất và cải tiến về chế độ Hình trong hình (PiP)

Android 12 có những điểm cải tiến sau đây cho chế độ PiP:

Hỗ trợ các cử chỉ mới cho chế độ PiP

Android 12 hiện hỗ trợ cử chỉ lưu trữ và cử chỉ chụm để thu phóng cho cửa sổ PiP:

  • Để lưu trữ cửa sổ, người dùng có thể kéo cửa sổ sang cạnh trái hoặc phải. Để huỷ lưu trữ cửa sổ, người dùng có thể nhấn vào phần hiển thị của cửa sổ đã lưu trữ hoặc kéo cửa sổ đó ra.

  • Giờ đây, người dùng có thể đổi kích thước cửa sổ PiP bằng cách chụm để thu phóng.

Android 12 đã bổ sung những điểm cải tiến đáng kể về giao diện cho các hiệu ứng chuyển động chuyển đổi giữa cửa sổ toàn màn hình và cửa sổ PiP. Bạn nên triển khai tất cả các thay đổi hiện hành. Sau khi bạn triển khai, những thay đổi này sẽ tự động điều chỉnh cho phù hợp với màn hình lớn, chẳng hạn như thiết bị có thể gập lại và máy tính bảng mà không cần phải làm gì thêm.

Các tính năng này như sau:

Thông báo mới về cuộc gọi điện thoại cho phép xếp hạng mức độ quan trọng của cuộc gọi đến

Android 12 bổ sung kiểu thông báo mới Notification.CallStyle cho cuộc gọi điện thoại. Khi dùng mẫu này, ứng dụng của bạn có thể cho biết mức độ quan trọng của các cuộc gọi đang diễn ra bằng cách hiển thị một chip nổi bật cho biết thời gian của cuộc gọi trong thanh trạng thái; người dùng có thể nhấn vào chip này để quay lại cuộc gọi.

Vì cuộc gọi đến và cuộc gọi đang diễn ra là quan trọng nhất đối với người dùng, nên những thông báo này được xếp hạng cao nhất trong bảng thông báo. Thứ hạng này cũng cho phép hệ thống có thể chuyển tiếp các cuộc gọi được ưu tiên này đến các thiết bị khác.

Triển khai mã sau cho tất cả các loại lệnh gọi.

Kotlin

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

Dùng forIncomingCall() để tạo thông báo kiểu cuộc gọi cho cuộc gọi đến.

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

Sử dụng forOngoingCall() để tạo thông báo kiểu cuộc gọi cho một cuộc gọi đang diễn ra.

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

Dùng forScreeningCall() để tạo thông báo kiểu cuộc gọi nhằm sàng lọc cuộc gọi.

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

Hỗ trợ hình ảnh đa dạng cho thông báo

Trong Android 12, giờ đây, bạn có thể làm phong phú trải nghiệm thông báo của ứng dụng bằng cách cung cấp hình ảnh động trong thông báo MessagingStyle()BigPictureStyle(). Ngoài ra, giờ đây, ứng dụng của bạn có thể cho phép người dùng gửi tin nhắn hình ảnh khi họ trả lời tin nhắn từ ngăn thông báo.

Cải tiến chế độ sống động cho chế độ thao tác bằng cử chỉ

Android 12 hợp nhất hành vi hiện có để người dùng dễ dàng thực hiện các lệnh thao tác bằng cử chỉ khi ở chế độ sống động. Ngoài ra, Android 12 còn cung cấp hành vi tương thích ngược cho chế độ hiển thị toàn màn hình cố định.

Chia sẻ URL của nội dung gần đây (chỉ có trên Pixel)

Trên thiết bị Pixel, giờ đây, người dùng có thể chia sẻ đường liên kết đến nội dung web đã xem gần đây ngay trên màn hình Gần đây. Sau khi truy cập vào nội dung trong một ứng dụng, người dùng có thể vuốt đến màn hình Gần đây và tìm ứng dụng mà họ đã xem nội dung, sau đó nhấn vào nút liên kết để sao chép hoặc chia sẻ URL.

Để biết thêm thông tin, hãy xem bài viết Bật tính năng chia sẻ URL gần đây.

Bảo mật và quyền riêng tư

Bảng tổng quan về quyền riêng tư

Dòng thời gian dọc cho biết những ứng dụng
         đã truy cập thông tin vị trí và thời điểm truy cập
Hình 1. Màn hình Sử dụng vị trí trên Bảng tổng quan về quyền riêng tư.

Trên các thiết bị được hỗ trợ chạy Android 12 trở lên, màn hình Bảng tổng quan về quyền riêng tư sẽ xuất hiện trong phần cài đặt hệ thống. Trên màn hình này, người dùng có thể truy cập vào những màn hình riêng biệt xuất hiện khi các ứng dụng truy cập vào thông tin vị trí, máy ảnh và micrô. Mỗi màn hình hiển thị một dòng thời gian cho biết thời điểm các ứng dụng truy cập vào loại dữ liệu cụ thể. Hình 1 cho thấy dòng thời gian truy cập dữ liệu đối với thông tin vị trí.

Ứng dụng của bạn có thể giải thích lý do cho người dùng để giúp họ hiểu được tại sao ứng dụng đó truy cập vào thông tin vị trí, máy ảnh hoặc micrô. Lý do này có thể xuất hiện trên màn hình mới của Bảng tổng quan về quyền riêng tư, màn hình quyền của ứng dụng hoặc cả hai.

Quyền truy cập Bluetooth

Android 12 giới thiệu các quyền BLUETOOTH_SCAN, BLUETOOTH_ADVERTISEBLUETOOTH_CONNECT. Những quyền này giúp các ứng dụng nhắm đến Android 12 dễ dàng tương tác với các thiết bị Bluetooth, đặc biệt là đối với những ứng dụng không yêu cầu quyền truy cập vào thông tin vị trí của thiết bị.

Cập nhật nội dung khai báo quyền truy cập Bluetooth của ứng dụng

Để chuẩn bị thiết bị cho việc nhắm đến Android 12 trở lên, hãy cập nhật logic của ứng dụng. Thay vì khai báo một nhóm quyền Bluetooth cũ, hãy khai báo một nhóm quyền Bluetooth hiện đại hơn.

Tra cứu nhóm quyền

Trên Android 12 trở lên, bạn có thể truy vấn cách hệ thống sắp xếp các quyền do nền tảng cung cấp thành các nhóm quyền:

  • Để xác định nhóm quyền mà hệ thống đã đặt một quyền do nền tảng xác định vào, hãy gọi getGroupOfPlatformPermission().
  • Để xác định những quyền do nền tảng xác định mà hệ thống đã đặt vào một nhóm quyền cụ thể, hãy gọi getPlatformPermissionsForGroup().

Ẩn cửa sổ lớp phủ ứng dụng

Để cho phép nhà phát triển kiểm soát nhiều hơn đối với những gì người dùng nhìn thấy khi họ tương tác với ứng dụng của nhà phát triển, Android 12 giới thiệu khả năng ẩn các cửa sổ lớp phủ do những ứng dụng có quyền SYSTEM_ALERT_WINDOW vẽ.

Sau khi khai báo quyền HIDE_OVERLAY_WINDOWS, ứng dụng có thể gọi setHideOverlayWindows() để cho biết rằng tất cả các cửa sổ thuộc loại TYPE_APPLICATION_OVERLAY đều phải bị ẩn khi cửa sổ của chính ứng dụng hiển thị. Các ứng dụng có thể chọn thực hiện việc này khi hiển thị các màn hình nhạy cảm, chẳng hạn như quy trình xác nhận giao dịch.

Những ứng dụng hiển thị các cửa sổ thuộc loại TYPE_APPLICATION_OVERLAY nên cân nhắc những lựa chọn thay thế có thể phù hợp hơn với trường hợp sử dụng của mình, chẳng hạn như chế độ hình trong hình hoặc bong bóng.

Cờ bảo vệ quyền của người ký đã biết

Kể từ Android 12, thuộc tính knownCerts đối với các quyền ở cấp chữ ký cho phép bạn tham khảo thông báo của chứng chỉ ký đã biết tại thời điểm khai báo.

Ứng dụng của bạn có thể khai báo thuộc tính này và sử dụng cờ knownSigner để cho phép các thiết bị và ứng dụng cấp quyền chữ ký cho các ứng dụng khác mà không cần phải ký ứng dụng tại thời điểm sản xuất và vận chuyển thiết bị.

Chứng thực thuộc tính thiết bị

Android 12 mở rộng nhóm ứng dụng có thể xác minh các thuộc tính của thiết bị có trong chứng chỉ chứng thực khi các ứng dụng này tạo khoá mới.

Kể từ Android 9 (API cấp 28), chủ sở hữu chính sách thiết bị (DPO) sử dụng Keymaster 4.0 trở lên có thể xác minh các thuộc tính của thiết bị trong những chứng chỉ chứng thực này. Kể từ Android 12, mọi ứng dụng nhắm đến Android 12 (API cấp 31) trở lên đều có thể thực hiện quy trình xác minh này bằng phương thức setDevicePropertiesAttestationIncluded().

Các thuộc tính thiết bị được tạo bao gồm các trường Build sau đây:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Bảo mật các thao tác với thông báo trên màn hình khoá

Kể từ Android 12, lớp Notification.Action.Builder hỗ trợ phương thức setAuthenticationRequired(). Phương thức này cho phép ứng dụng của bạn yêu cầu thiết bị phải được mở khoá trước khi ứng dụng gọi một thao tác thông báo nhất định. Phương thức này giúp thêm một lớp bảo mật bổ sung cho các thông báo trên thiết bị bị khoá.

Các chuỗi có thể bản địa hoá cho BiometricPrompt

Android 12 giới thiệu các API mới để giúp bạn cải thiện trải nghiệm người dùng xác thực sinh trắc học của ứng dụng. Lớp lồng nhau BiometricManager.Strings mới bao gồm các phương thức getButtonLabel(), getPromptMessage()getSettingName(). Các phương thức này cho phép ứng dụng của bạn truy xuất nhãn nút, thông báo nhắc hoặc tên chế độ cài đặt ứng dụng mà người dùng có thể đọc và được bản địa hoá. Sử dụng các nhãn này để tạo hướng dẫn chính xác hơn cho người dùng, cụ thể cho các phương thức xác thực sinh trắc học được dùng, chẳng hạn như "Sử dụng tính năng mở khoá bằng khuôn mặt" hoặc "Sử dụng vân tay để tiếp tục".

Phát hiện hành vi lừa đảo trong ứng dụng nhắn tin (chỉ có trên điện thoại Pixel)

Người dùng sẽ thấy một thông báo như thế này khi hệ thống phát hiện thấy một tin nhắn đáng ngờ.

Trên các thiết bị Pixel được hỗ trợ, Android 12 sẽ chạy tính năng phát hiện hành vi lừa đảo qua tin nhắn nhận được trong các ứng dụng nhắn tin phổ biến. Hệ thống sử dụng công nghệ học máy trên thiết bị để phát hiện hoạt động đáng ngờ. Khi phát hiện thấy nội dung không an toàn, hệ thống sẽ hiển thị một lớp phủ an toàn trên cùng giao diện người dùng của ứng dụng nhắn tin để cảnh báo người dùng. Ví dụ: tính năng phát hiện hành vi lừa đảo có thể cảnh báo cho người dùng về những rủi ro tiềm ẩn sau đây:

  • Yêu cầu đáng ngờ, chẳng hạn như yêu cầu gửi mã, tiền hoặc nội dung tương tự
  • URL không đáng tin cậy
  • Tệp đính kèm độc hại
  • Đường liên kết đến ứng dụng độc hại

Ngoài việc cảnh báo người dùng, lớp phủ này cũng cho phép người dùng báo cáo tin nhắn đáng ngờ và cung cấp ý kiến phản hồi về các cảnh báo do hệ thống đưa ra.

Nhà phát triển có thể chọn không sử dụng tính năng này bằng cách thêm một thẻ siêu dữ liệu mới có chứa chuỗi com.google.android.ALLOW_PHISHING_DETECTION vào tệp kê khai ứng dụng. Ví dụ:

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

Nội dung nghe nhìn

Chuyển mã tệp đa phương tiện tương thích

Kể từ Android 12 (API cấp 31), hệ thống có thể tự động chuyển mã HEVC(H.265)HDR (HDR10 và HDR10+) của video được quay trên thiết bị sang AVC (H.264), một định dạng tương thích rộng rãi với các trình phát tiêu chuẩn. Điều này tận dụng các bộ mã hoá và giải mã hiện đại khi chúng có sẵn mà không làm giảm khả năng tương thích với các ứng dụng cũ.

Hãy xem bài viết khả năng chuyển mã phương tiện tương thích để biết thêm thông tin.

Lớp hiệu suất

Android 12 giới thiệu một tiêu chuẩn gọi là lớp hiệu suất. Lớp hiệu suất chỉ định các chức năng phần cứng vượt ngoài các yêu cầu cơ bản của Android. Mỗi thiết bị Android đều khai báo lớp hiệu suất mà thiết bị hỗ trợ. Các nhà phát triển có thể kiểm tra lớp hiệu suất của thiết bị trong thời gian chạy, đồng thời mang đến trải nghiệm nâng cấp để khai thác tối đa các tính năng của thiết bị.

Hãy xem Lớp hiệu suất để biết thêm thông tin chi tiết.

Cải thiện hiệu suất mã hoá video

Android 12 xác định một bộ khoá tiêu chuẩn để kiểm soát giá trị tham số lượng tử hoá (QP) cho hoạt động mã hoá video, cho phép nhà phát triển tránh mã dành riêng cho nhà cung cấp.

Các khoá mới có trong API MediaFormat và cả trong Thư viện đa phương tiện NDK.

Kể từ Android 12, bộ mã hoá video sẽ áp dụng một ngưỡng chất lượng tối thiểu. Điều này đảm bảo rằng người dùng không gặp phải chất lượng cực thấp khi mã hoá video có độ phức tạp cao về cảnh.

Quyền phát âm thanh

Kể từ Android 12 (API cấp 31), khi một ứng dụng yêu cầu quyền phát âm thanh trong khi một ứng dụng khác đang có quyền này và đang phát, hệ thống sẽ làm mờ ứng dụng đang phát.

Hãy xem bài viết Lấy tiêu điểm âm thanh trong Android 12 trở lên để biết thêm thông tin.

Nội dung cập nhật MediaDrm

Để xác định xem có cần thành phần bộ giải mã bảo mật với các API MediaDrm hiện tại hay không, bạn phải làm theo các bước sau:

  1. Tạo MediaDrm.
  2. Mở một phiên để lấy mã phiên.
  3. Tạo MediaCrypto bằng mã phiên.
  4. Gọi MediaCrypto.requiresSecureDecoderComponent(mimeType).

Với các phương thức mới requiresSecureDecoder(@NonNull String mime)requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level), bạn có thể xác định điều này ngay khi tạo MediaDrm.

Camera

Tiện ích của nhà cung cấp Camera2

Nhiều đối tác là nhà sản xuất thiết bị của chúng tôi đã tạo các tiện ích máy ảnh tuỳ chỉnh (chẳng hạn như Bokeh, HDR, Chế độ ban đêm và các tiện ích khác) mà họ muốn các ứng dụng sử dụng để tạo trải nghiệm khác biệt trên thiết bị của họ. Thư viện CameraX đã hỗ trợ các tiện ích tuỳ chỉnh của nhà cung cấp này. Trong Android 12, các tiện ích của nhà cung cấp này hiện được hiển thị trực tiếp trong nền tảng.

Việc bổ sung này giúp những ứng dụng có các chế độ triển khai Camera2 phức tạp tận dụng các tiện ích của nhà cung cấp mà không cần thực hiện những thay đổi đáng kể đối với mã cũ. Camera2 Extension API (API tiện ích Camera2) cung cấp chính xác cùng một bộ tiện ích như trong CameraX và những tiện ích đó đã được hỗ trợ trên nhiều thiết bị, vì vậy, bạn có thể sử dụng chúng mà không cần thêm cấu hình nào.

Để biết thêm thông tin, hãy xem CameraExtensionCharacteristics.

Hỗ trợ cảm biến camera Quad Bayer

Ngày nay, nhiều thiết bị Android được trang bị cảm biến camera có độ phân giải siêu cao, thường có các mẫu Quad hoặc Nona Bayer và những cảm biến này mang lại sự linh hoạt cao về chất lượng hình ảnh và hiệu suất trong điều kiện ánh sáng yếu. Android 12 giới thiệu các API nền tảng mới cho phép các ứng dụng bên thứ ba khai thác tối đa những cảm biến đa năng này. Các API mới hỗ trợ hành vi riêng biệt của những cảm biến này và xem xét việc chúng có thể hỗ trợ các cấu hình và tổ hợp luồng khác nhau khi hoạt động ở chế độ độ phân giải đầy đủ hoặc "độ phân giải tối đa" so với chế độ "mặc định".

Đồ hoạ và hình ảnh

Cho phép ứng dụng truy cập trực tiếp vào dấu vết tombstone

Kể từ Android 12, bạn có thể truy cập vào tombstone về sự cố gốc của ứng dụng dưới dạng một bộ đệm giao thức thông qua phương thức ApplicationExitInfo.getTraceInputStream(). Vùng đệm giao thức này được tuần tự hoá bằng cách sử dụng lược đồ này. Trước đây, cách duy nhất để truy cập vào thông tin này là thông qua Cầu gỡ lỗi Android (Android Debug Bridge – adb).

Để biết thêm thông tin, hãy xem phần Cho phép ứng dụng truy cập trực tiếp vào dấu vết tombstone

Hỗ trợ hình ảnh AVIF

Android 12 hỗ trợ hình ảnh sử dụng Định dạng tệp hình ảnh AV1 (AVIF). AVIF là một định dạng vùng chứa dành cho hình ảnh và trình tự của hình ảnh được mã hoá bằng AV1. AVIF tận dụng lợi thế của nội dung được mã hoá trong khung hình từ việc nén video. Điều này giúp cải thiện đáng kể chất lượng hình ảnh cho cùng một kích thước tệp khi so với các định dạng hình ảnh cũ, chẳng hạn như JPEG. Để hiểu sâu hơn về ưu điểm của định dạng này, vui lòng xem bài đăng trên blog của Jake Archibald.

Dễ dàng làm mờ, dùng bộ lọc màu và các hiệu ứng khác

Android 12 bổ sung RenderEffect mới. Lớp này áp dụng các hiệu ứng đồ hoạ phổ biến như làm mờ, bộ lọc màu, hiệu ứng chương trình đổ bóng Android và nhiều hiệu ứng khác cho View và các hệ phân cấp kết xuất. Bạn có thể kết hợp các hiệu ứng dưới dạng hiệu ứng chuỗi (tạo thành hiệu ứng bên trong và bên ngoài) hoặc hiệu ứng kết hợp. Các thiết bị Android khác nhau có thể hỗ trợ hoặc không hỗ trợ tính năng này do hạn chế về sức mạnh xử lý.

Bạn cũng có thể áp dụng các hiệu ứng cho RenderNode cơ bản cho View bằng cách gọi View.setRenderEffect(RenderEffect).

Cách triển khai RenderEffect:

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Giải mã hình ảnh động gốc

Trong Android 12, API NDK ImageDecoder đã được mở rộng để giải mã tất cả dữ liệu khung và thời gian từ những hình ảnh sử dụng định dạng tệp GIF động và WebP động. Khi được giới thiệu trong Android 11, API này chỉ giải mã hình ảnh đầu tiên từ ảnh động ở các định dạng này.

Hãy sử dụng ImageDecoder thay vì thư viện của bên thứ ba để giảm kích thước tệp APK và hưởng lợi nhờ các bản cập nhật sau này liên quan đến tính bảo mật và hiệu suất.

Để biết thêm thông tin chi tiết về API, hãy tham khảo tài liệu tham khảo về APImẫu trên GitHub.

Khả năng kết nối

Giữ ứng dụng đồng hành ở chế độ bật

Để hỗ trợ nhu cầu của các ứng dụng đồng hành là phải luôn chạy để quản lý thiết bị, Android 12 giới thiệu các API thực hiện những việc sau:

  • Cho phép bạn đánh thức một ứng dụng khi thiết bị đồng hành nằm trong phạm vi.
  • Đảm bảo rằng quy trình sẽ tiếp tục chạy trong khi thiết bị vẫn nằm trong phạm vi.

Để sử dụng các API này, thiết bị của bạn phải được kết nối bằng Trình quản lý thiết bị đồng hành. Để biết thêm thông tin, hãy xem CompanionDeviceManager.startObservingDevicePresence()CompanionDeviceService.onDeviceAppeared().

Hồ sơ Trình quản lý thiết bị đồng hành

Hộp thoại quyền sử dụng hồ sơ thiết bị đồng hành để yêu cầu cấp nhiều quyền trong một yêu cầu.

Các ứng dụng của đối tác trên Android 12 (API cấp độ 31) trở lên có thể sử dụng hồ sơ của thiết bị đồng hành đồng hành khi kết nối với đồng hồ. Việc sử dụng hồ sơ giúp đơn giản hoá quá trình đăng ký bằng cách nhóm việc cấp một nhóm quyền theo loại thiết bị cụ thể trong một bước.

Các quyền đi kèm sẽ được cấp cho ứng dụng đồng hành sau khi thiết bị kết nối và chỉ có hiệu lực khi thiết bị được liên kết. Việc xoá ứng dụng hoặc xoá các liên kết cũng là xoá các quyền.

Để biết thêm thông tin, hãy xem AssociationRequest.Builder.setDeviceProfile().

Cải thiện việc ước tính băng thông

Trong Android 12, khả năng ước tính băng thông do getLinkDownstreamBandwidthKbps()getLinkUpstreamBandwidthKbps() cung cấp đã được cải thiện cho cả kết nối Wi-Fi và kết nối di động. Các giá trị được trả về hiện tại thể hiện thông lượng trung bình có trọng số của người dùng theo thời gian cho mỗi nhà mạng hoặc SSID Wi-Fi, loại mạng và cường độ tín hiệu, trên tất cả các ứng dụng trên thiết bị. Điều này có thể trả về mức ước tính chính xác và thực tế hơn về thông lượng dự kiến, cung cấp thông tin ước tính về quá trình khởi động nguội của ứng dụng và yêu cầu ít chu kỳ hơn so với việc sử dụng các phương pháp ước tính thông lượng khác.

Các điểm cải tiến của Wi-Fi Aware (NAN)

Android 12 bổ sung một số điểm cải tiến cho tính năng Nhận biết Wi-Fi:

  • Trên các thiết bị chạy Android 12 (API cấp 31) trở lên, bạn có thể sử dụng lệnh gọi lại onServiceLost() để nhận được cảnh báo khi ứng dụng của bạn mất một dịch vụ đã phát hiện do dịch vụ dừng hoặc di chuyển ra ngoài phạm vi.
  • Cách thiết lập nhiều đường dẫn dữ liệu (Đường dẫn dữ liệu NAN) đang thay đổi để trở nên hiệu quả hơn. Các phiên bản trước đây sử dụng thông báo L2 để trao đổi thông tin ngang hàng của người khởi tạo, điều này làm tăng độ trễ. Trên các thiết bị chạy Android 12 trở lên, bạn có thể định cấu hình bên phản hồi (máy chủ) để chấp nhận mọi thiết bị ngang hàng, tức là bên phản hồi không cần biết trước thông tin về bên khởi tạo. Điều này giúp tăng tốc quá trình khởi động đường dẫn dữ liệu và cho phép nhiều đường liên kết điểm-điểm chỉ với một yêu cầu mạng.
  • Để ngăn khung từ chối các yêu cầu khám phá hoặc kết nối do hết tài nguyên, trên các thiết bị chạy Android 12 trở lên, bạn có thể gọi WifiAwareManager.getAvailableAwareResources(). Giá trị trả về của phương thức này cho phép bạn lấy số lượng đường dẫn dữ liệu có sẵn, số lượng phiên xuất bản có sẵn và số lượng phiên đăng ký có sẵn.

Kết nối ngang hàng và Internet đồng thời

Khi các thiết bị nhắm đến Android 12 (API cấp 31) trở lên chạy trên các thiết bị có hỗ trợ phần cứng, việc sử dụng Kết nối ngang hàng sẽ không ngắt kết nối Wi-Fi hiện có khi tạo kết nối với thiết bị ngang hàng. Để kiểm tra xem thiết bị có hỗ trợ tính năng này hay không, hãy sử dụng WifiManager.isMultiStaConcurrencySupported().

Bật chế độ tắt màn hình để thanh toán bằng NFC

Trong các ứng dụng nhắm đến Android 12 trở lên, bạn có thể bật tính năng thanh toán qua NFC mà không cần bật màn hình thiết bị bằng cách đặt requireDeviceScreenOn thành false. Để biết thêm thông tin về các giao dịch thanh toán qua NFC khi màn hình tắt hoặc bị khoá, hãy xem bài viết Hành vi khi màn hình tắt và màn hình khoá.

Dung lượng lưu trữ

Android 12 giới thiệu các tính năng quản lý bộ nhớ sau đây:

Chức năng cốt lõi

Tự động cập nhật ứng dụng

Android 12 giới thiệu phương thức setRequireUserAction() cho các ứng dụng sử dụng API PackageInstaller. Phương thức này cho phép các ứng dụng trình cài đặt thực hiện việc cập nhật ứng dụng mà không yêu cầu người dùng xác nhận hành động.

Thông tin về chipset của thiết bị

Android 12 thêm 2 hằng số vào android.os.Build để hiển thị thông tin về nhà cung cấp và kiểu chipset SoC thông qua SDK. Bạn có thể truy xuất thông tin này bằng cách gọi Build.SOC_MANUFACTURERBuild.SOC_MODEL tương ứng.

Nội dung cập nhật đối với các API Java cốt lõi

Dựa trên các yêu cầu và sự cộng tác với nhà phát triển, chúng tôi đã thêm các thư viện cốt lõi sau đây trong Android 12:

Lớp học API
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime