API Android 6.0

Android 6.0 (M) cung cấp các tính năng mới cho người dùng và nhà phát triển ứng dụng. Tài liệu này giới thiệu về các API đáng chú ý nhất.

Bắt đầu phát triển

Để bắt đầu tạo ứng dụng cho Android 6.0, trước tiên, bạn phải tải SDK Android. Sau đó, sử dụng Trình quản lý SDK để tải Hình ảnh hệ thống và Nền tảng SDK Android 6.0 xuống.

Cập nhật cấp độ API mục tiêu của bạn

Để tối ưu hoá ứng dụng của bạn một cách hiệu quả hơn cho các thiết bị chạy Android, hãy đặt targetSdkVersion thành "23", cài đặt ứng dụng trên hình ảnh hệ thống Android, kiểm thử ứng dụng rồi phát hành ứng dụng đã cập nhật theo thay đổi này.

Bạn có thể sử dụng API Android trong khi vẫn hỗ trợ các phiên bản cũ bằng cách thêm điều kiện vào mã để kiểm tra cấp độ API hệ thống trước khi thực thi các API không được minSdkVersion của bạn hỗ trợ. Để tìm hiểu thêm về cách duy trì khả năng tương thích ngược, hãy đọc bài viết Hỗ trợ các phiên bản nền tảng khác nhau.

Để biết thêm thông tin về cách hoạt động của các cấp độ API, hãy đọc bài viết Cấp độ API là gì?

Xác thực bằng vân tay

Bản phát hành này cung cấp các API mới để cho phép bạn xác thực người dùng bằng cách sử dụng tính năng quét vân tay của họ trên các thiết bị được hỗ trợ. Hãy sử dụng các API này cùng với hệ thống Kho khoá Android.

Để xác thực người dùng thông qua tính năng quét vân tay, hãy lấy một thực thể của lớp FingerprintManager mới và gọi phương thức authenticate(). Ứng dụng của bạn phải đang chạy trên một thiết bị tương thích có cảm biến vân tay. Bạn phải triển khai giao diện người dùng cho quy trình xác thực vân tay trên ứng dụng và sử dụng biểu tượng vân tay Android tiêu chuẩn trong giao diện người dùng. Biểu tượng vân tay Android (c_fp_40px.png) có trong mẫu Xác thực sinh trắc học. Nếu bạn đang phát triển nhiều ứng dụng sử dụng tính năng xác thực bằng vân tay, hãy lưu ý rằng mỗi ứng dụng phải xác thực vân tay của người dùng một cách độc lập.

Để dùng tính năng này trong ứng dụng của bạn, trước tiên, hãy thêm quyền USE_FINGERPRINT vào tệp kê khai.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
Thiết bị di động cho thấy chức năng xác thực bằng vân tay

Để xem cách triển khai tính năng xác thực bằng vân tay cho một ứng dụng, hãy tham khảo Mẫu Xác thực bằng sinh trắc học. Để minh hoạ cách sử dụng các API xác thực này cùng với các API Android khác, hãy xem video về API Vân tay số và Thanh toán.

Nếu bạn đang thử nghiệm tính năng này, hãy làm theo các bước sau:

  1. Cài đặt Bản sửa đổi 24.3 của Bộ công cụ SDK Android nếu bạn chưa thực hiện.
  2. Đăng ký vân tay mới trong trình mô phỏng bằng cách chuyển đến phần Cài đặt > Bảo mật > Vân tay, sau đó làm theo hướng dẫn đăng ký.
  3. Sử dụng trình mô phỏng để mô phỏng các sự kiện chạm bằng vân tay bằng lệnh sau. Dùng cùng một lệnh để mô phỏng các sự kiện chạm bằng vân tay trên màn hình khoá hoặc trong ứng dụng của bạn.
    adb -e emu finger touch <finger_id>
    

    Trên Windows, bạn có thể phải chạy telnet 127.0.0.1 <emulator-id>, sau đó là finger touch <finger_id>.

Xác nhận thông tin đăng nhập

Ứng dụng của bạn có thể xác thực người dùng dựa trên lần gần đây nhất họ mở khoá thiết bị. Tính năng này giúp người dùng không phải ghi nhớ các mật khẩu khác dành riêng cho ứng dụng, đồng thời tránh cần bạn phải triển khai giao diện người dùng xác thực của riêng mình. Ứng dụng của bạn nên sử dụng tính năng này kết hợp với việc triển khai khoá công khai hoặc khoá bí mật để xác thực người dùng.

Để đặt khoảng thời gian chờ mà khoá đó có thể được sử dụng lại sau khi người dùng được xác thực thành công, hãy gọi phương thức setUserAuthenticationValidityDurationSeconds() mới khi bạn thiết lập KeyGenerator hoặc KeyPairGenerator.

Tránh hiện hộp thoại xác thực lại quá nhiều – ứng dụng của bạn nên thử sử dụng đối tượng mật mã trước tiên và nếu hết thời gian chờ, hãy sử dụng phương thức createConfirmDeviceCredentialIntent() để xác thực lại người dùng trong ứng dụng của bạn.

Liên kết ứng dụng

Bản phát hành này cải thiện hệ thống ý định của Android bằng cách cung cấp tính năng liên kết ứng dụng mạnh mẽ hơn. Tính năng này cho phép bạn liên kết ứng dụng với miền web mà bạn sở hữu. Dựa trên mối liên kết này, nền tảng có thể xác định ứng dụng mặc định cần dùng để xử lý một đường liên kết web cụ thể mà không cần nhắc người dùng chọn một ứng dụng. Để tìm hiểu cách triển khai tính năng này, hãy xem phần Xử lý đường liên kết đến ứng dụng.

Tự động sao lưu cho ứng dụng

Giờ đây, hệ thống sẽ thực hiện tự động sao lưu và khôi phục toàn bộ dữ liệu cho các ứng dụng. Ứng dụng của bạn phải nhắm đến Android 6.0 (API cấp 23) thì mới cho phép được hành vi này; bạn không cần thêm mã nào khác. Nếu người dùng xoá Tài khoản Google của mình, dữ liệu sao lưu của họ cũng sẽ bị xoá. Để tìm hiểu cách hoạt động của tính năng này và cách định cấu hình nội dung sao lưu trên hệ thống tệp, hãy xem phần Định cấu hình tính năng Tự động sao lưu cho ứng dụng.

Chia sẻ trực tiếp

Phần dưới cùng của thiết bị di động đang hiển thị chức năng Chia sẻ trực tiếp

Bản phát hành này cung cấp cho bạn các API để giúp người dùng chia sẻ trực quan và nhanh chóng. Giờ đây, bạn có thể xác định mục tiêu chia sẻ trực tiếp sẽ khởi chạy một hoạt động cụ thể trong ứng dụng của mình. Những mục tiêu chia sẻ trực tiếp này sẽ hiển thị cho người dùng thông qua trình đơn Chia sẻ. Tính năng này cho phép người dùng chia sẻ nội dung với các mục tiêu (chẳng hạn như danh bạ) trong các ứng dụng khác. Ví dụ: mục tiêu chia sẻ trực tiếp có thể khởi chạy hoạt động trong một ứng dụng mạng xã hội khác, cho phép người dùng chia sẻ nội dung trực tiếp với một người bạn hoặc cộng đồng cụ thể trong ứng dụng đó.

Để bật mục tiêu chia sẻ trực tiếp, bạn phải xác định một lớp mở rộng lớp ChooserTargetService. Khai báo dịch vụ trong tệp kê khai. Trong nội dung khai báo đó, hãy chỉ định quyền BIND_CHOOSER_TARGET_SERVICE và bộ lọc ý định bằng thao tác SERVICE_INTERFACE.

Ví dụ sau cho thấy cách bạn có thể khai báo ChooserTargetService trong tệp kê khai.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Đối với mỗi hoạt động bạn muốn hiển thị trên ChooserTargetService, hãy thêm phần tử <meta-data> có tên "android.service.chooser.chooser_target_service" vào tệp kê khai ứng dụng.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

Tương tác giọng nói

Bản phát hành này cung cấp một API tương tác bằng giọng nói mới, cùng với tính năng Thao tác bằng giọng nói, cho phép bạn đưa trải nghiệm trò chuyện bằng giọng nói vào ứng dụng của mình. Hãy gọi phương thức isVoiceInteraction() để xác định xem một thao tác bằng giọng nói có kích hoạt hoạt động của bạn hay không. Nếu có, ứng dụng của bạn có thể sử dụng lớp VoiceInteractor để yêu cầu người dùng xác nhận bằng giọng nói, chọn trong danh sách các tuỳ chọn, v.v.

Hầu hết các hoạt động tương tác bằng giọng nói đều bắt nguồn từ thao tác bằng giọng nói của người dùng. Tuy nhiên, hoạt động tương tác bằng giọng nói cũng có thể bắt đầu mà không cần dữ liệu do người dùng nhập. Ví dụ: một ứng dụng khác chạy thông qua hoạt động tương tác bằng giọng nói cũng có thể gửi ý định khởi chạy hoạt động tương tác bằng giọng nói. Để xác định xem hoạt động của bạn khởi chạy từ truy vấn bằng giọng nói của người dùng hay từ một ứng dụng tương tác bằng giọng nói khác, hãy gọi phương thức isVoiceInteractionRoot(). Nếu một ứng dụng khác đã chạy hoạt động, phương thức này sẽ trả về false. Sau đó, ứng dụng của bạn có thể nhắc người dùng xác nhận rằng họ có ý định thực hiện hành động này.

Để tìm hiểu thêm về cách triển khai thao tác bằng giọng nói, hãy xem trang web dành cho nhà phát triển Thao tác bằng giọng nói.

API hỗ trợ

Bản phát hành này mang đến một cách mới để người dùng tương tác với ứng dụng của bạn thông qua một trợ lý. Để sử dụng tính năng này, người dùng phải bật trợ lý để sử dụng ngữ cảnh hiện tại. Sau khi bật, người dùng có thể gọi trợ lý trong bất kỳ ứng dụng nào bằng cách nhấn và giữ nút Màn hình chính.

Ứng dụng của bạn có thể chọn không chia sẻ ngữ cảnh hiện tại với trợ lý bằng cách đặt cờ FLAG_SECURE. Ngoài tập hợp thông tin chuẩn mà nền tảng truyền cho trợ lý, ứng dụng của bạn có thể chia sẻ thêm thông tin bằng cách sử dụng lớp AssistContent mới.

Để cung cấp cho trợ lý ngữ cảnh bổ sung từ ứng dụng của bạn, hãy làm theo các bước sau:

  1. Triển khai giao diện Application.OnProvideAssistDataListener.
  2. Đăng ký trình nghe này bằng cách sử dụng registerOnProvideAssistDataListener().
  3. Để cung cấp thông tin theo ngữ cảnh cụ thể cho hoạt động, hãy ghi đè lệnh gọi lại onProvideAssistData() và lệnh gọi lại onProvideAssistContent() mới (không bắt buộc).

Thiết bị lưu trữ có thể sử dụng

Với bản phát hành này, người dùng có thể sử dụng các thiết bị lưu trữ ngoài, chẳng hạn như thẻ SD. Việc sử dụng thiết bị lưu trữ bên ngoài sẽ mã hoá và định dạng thiết bị để hoạt động như bộ nhớ trong. Tính năng này cho phép người dùng di chuyển cả ứng dụng và dữ liệu riêng tư của những ứng dụng đó giữa các thiết bị lưu trữ. Khi di chuyển ứng dụng, hệ thống sẽ tuân theo lựa chọn ưu tiên android:installLocation trong tệp kê khai.

Nếu ứng dụng của bạn truy cập vào các API hoặc trường sau đây, hãy lưu ý rằng đường dẫn tệp mà ứng dụng trả về sẽ tự động thay đổi khi ứng dụng di chuyển giữa thiết bị lưu trữ trong và ngoài. Khi xây dựng đường dẫn tệp, bạn nên luôn gọi các API này một cách linh động. Không sử dụng đường dẫn tệp được mã hoá cứng hoặc duy trì đường dẫn tệp đủ điều kiện đã được tạo trước đó.

Để gỡ lỗi tính năng này, bạn có thể cho phép sử dụng ổ đĩa USB được kết nối với thiết bị Android thông qua cáp USB On-The-Go (OTG) bằng cách chạy lệnh sau:

$ adb shell sm set-force-adoptable true

Thông báo

Bản phát hành này bổ sung một số thay đổi về API sau đây cho thông báo:

  • Cấp bộ lọc INTERRUPTION_FILTER_ALARMS mới tương ứng với chế độ không làm phiền mới có tên Chỉ chuông báo.
  • Giá trị danh mục CATEGORY_REMINDER mới dùng để phân biệt lời nhắc do người dùng lên lịch với các sự kiện khác (CATEGORY_EVENT) và chuông báo (CATEGORY_ALARM).
  • Lớp Icon mới mà bạn có thể đính kèm vào thông báo của mình thông qua phương thức setSmallIcon()setLargeIcon(). Tương tự, phương thức addAction() hiện chấp nhận đối tượng Icon thay vì mã nhận dạng tài nguyên có thể vẽ.
  • Phương thức getActiveNotifications() mới cho phép các ứng dụng của bạn tìm hiểu thông báo nào hiện đang hiển thị.

Hỗ trợ bút cảm ứng Bluetooth

Bản phát hành này cải thiện tính năng hỗ trợ hoạt động đầu vào của người dùng bằng bút cảm ứng Bluetooth. Người dùng có thể ghép nối và kết nối một bút cảm ứng Bluetooth tương thích với điện thoại hoặc máy tính bảng. Trong khi kết nối, thông tin về vị trí trên màn hình cảm ứng được kết hợp với thông tin về áp lực và nút trên bút cảm ứng để mang lại nhiều dạng biểu thức hơn so với khi chỉ có màn hình cảm ứng. Ứng dụng của bạn có thể theo dõi thao tác nhấn nút bằng bút cảm ứng và thực hiện các thao tác phụ bằng cách đăng ký các đối tượng View.OnContextClickListenerGestureDetector.OnContextClickListener trong hoạt động của bạn.

Sử dụng các phương thức và hằng số MotionEvent để phát hiện các lượt tương tác với nút bút cảm ứng:

  • Nếu người dùng chạm vào bút cảm ứng bằng một nút trên màn hình của ứng dụng, thì phương thức getTooltype() sẽ trả về TOOL_TYPE_STYLUS.
  • Đối với ứng dụng nhắm đến Android 6.0 (API cấp 23), phương thức getButtonState() sẽ trả về BUTTON_STYLUS_PRIMARY khi người dùng nhấn nút bút cảm ứng chính. Nếu bút cảm ứng có nút thứ hai, thì phương thức đó sẽ trả về BUTTON_STYLUS_SECONDARY khi người dùng nhấn vào nút đó. Nếu người dùng nhấn cả hai nút cùng lúc, thì phương thức này sẽ trả về cả hai giá trị OR (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • Đối với các ứng dụng nhắm đến phiên bản nền tảng thấp hơn, phương thức getButtonState() sẽ trả về BUTTON_SECONDARY (để nhấn nút bút cảm ứng chính), BUTTON_TERTIARY (để nhấn nút bút cảm ứng phụ) hoặc cả hai.

Cải thiện tính năng quét Bluetooth năng lượng thấp

Nếu ứng dụng của bạn thực hiện quét Bluetooth năng lượng thấp, hãy sử dụng phương thức setCallbackType() mới để chỉ định rằng bạn muốn hệ thống thông báo các lệnh gọi lại khi tìm thấy hoặc nhìn thấy sau một thời gian dài, một gói quảng cáo phù hợp với tập hợp ScanFilter. Phương pháp quét này tiết kiệm pin hơn so với phương pháp được cung cấp trong phiên bản nền tảng trước đó.

Hỗ trợ Điểm phát sóng 2.0 Bản phát hành 1

Bản phát hành này hỗ trợ thêm thông số kỹ thuật của Điểm phát sóng 2.0 Bản phát hành 1 trên các thiết bị Nexus 6 và Nexus 9. Để cung cấp thông tin đăng nhập của Điểm phát sóng 2.0 trong ứng dụng, hãy sử dụng các phương thức mới của lớp WifiEnterpriseConfig, chẳng hạn như setPlmn()setRealm(). Trong đối tượng WifiConfiguration, bạn có thể đặt các trường FQDNproviderFriendlyName. Phương thức isPasspointNetwork() mới cho biết liệu một mạng được phát hiện có đại diện cho điểm truy cập Điểm phát sóng 2.0 hay không.

Chế độ hiển thị 4K

Nền tảng này hiện cho phép các ứng dụng yêu cầu nâng cấp độ phân giải màn hình lên kết xuất 4K trên phần cứng tương thích. Để truy vấn độ phân giải thực hiện tại, hãy sử dụng các API Display.Mode mới. Nếu giao diện người dùng được vẽ ở độ phân giải logic thấp hơn và được nâng cấp lên độ phân giải thực lớn hơn, hãy lưu ý rằng độ phân giải vật lý mà phương thức getPhysicalWidth() trả về có thể khác với độ phân giải logic do getSize() báo cáo.

Bạn có thể yêu cầu hệ thống thay đổi độ phân giải thực tế trong ứng dụng khi ứng dụng chạy, bằng cách đặt thuộc tính preferredDisplayModeId của cửa sổ ứng dụng. Tính năng này rất hữu ích nếu bạn muốn chuyển sang độ phân giải màn hình 4K. Khi ở chế độ hiển thị 4K, giao diện người dùng tiếp tục được hiển thị ở độ phân giải gốc (chẳng hạn như 1080p) và được nâng cấp lên 4K, nhưng các đối tượng SurfaceView có thể hiển thị nội dung ở độ phân giải gốc.

Danh sách màu sắc có thể giao diện

Các thuộc tính giao diện hiện được hỗ trợ trong ColorStateList cho các thiết bị chạy trên Android 6.0 (API cấp 23). Các phương thức Resources.getColorStateList()Resources.getColor() không được dùng nữa. Nếu bạn đang gọi các API này, hãy gọi các phương thức Context.getColorStateList() hoặc Context.getColor() mới. Các phương thức này cũng có trong thư viện Appcompat v4 thông qua ContextCompat.

Tính năng âm thanh

Bản phát hành này bổ sung các tính năng nâng cao cho tính năng xử lý âm thanh trên Android, bao gồm:

  • Hỗ trợ giao thức MIDI, với các API android.media.midi mới. Hãy sử dụng các API này để gửi và nhận các sự kiện MIDI.
  • Các lớp AudioRecord.BuilderAudioTrack.Builder mới để tạo đối tượng thu âm và phát âm thanh kỹ thuật số tương ứng, đồng thời định cấu hình các thuộc tính nguồn âm thanh và bồn lưu trữ dữ liệu để ghi đè các chế độ mặc định của hệ thống.
  • Hook API để liên kết thiết bị đầu vào và âm thanh. Điều này đặc biệt hữu ích nếu ứng dụng của bạn cho phép người dùng tìm kiếm bằng giọng nói trên tay điều khiển trò chơi hoặc điều khiển từ xa được kết nối với Android TV. Hệ thống sẽ thực hiện lệnh gọi lại onSearchRequested() mới khi người dùng bắt đầu tìm kiếm. Để xác định xem thiết bị đầu vào của người dùng có micrô tích hợp hay không, hãy truy xuất đối tượng InputDevice qua lệnh gọi lại đó, sau đó gọi phương thức hasMicrophone() mới.
  • Phương thức getDevices() mới cho phép bạn truy xuất danh sách tất cả các thiết bị âm thanh hiện đang kết nối với hệ thống. Bạn cũng có thể đăng ký đối tượng AudioDeviceCallback nếu muốn hệ thống thông báo cho ứng dụng của bạn khi thiết bị âm thanh kết nối hoặc ngắt kết nối.

Các tính năng của video

Bản phát hành này bổ sung các tính năng mới cho API xử lý video, bao gồm:

  • Lớp MediaSync mới giúp các ứng dụng kết xuất đồng bộ luồng âm thanh và video. Các vùng đệm âm thanh được gửi ở dạng không chặn và được trả về thông qua một lệnh gọi lại. Nó cũng hỗ trợ tốc độ phát động.
  • Sự kiện EVENT_SESSION_RECLAIMED mới cho biết một phiên do ứng dụng mở đã được trình quản lý tài nguyên xác nhận lại. Nếu ứng dụng của bạn sử dụng các phiên DRM, bạn nên xử lý sự kiện này và đảm bảo không sử dụng các phiên được xác nhận lại.
  • Mã lỗi ERROR_RECLAIMED mới, cho biết trình quản lý tài nguyên đã lấy lại tài nguyên nội dung đa phương tiện mà bộ mã hoá và giải mã sử dụng. Với ngoại lệ này, bộ mã hoá và giải mã phải được giải phóng vì đã chuyển sang trạng thái cuối.
  • Giao diện getMaxSupportedInstances() mới để nhận gợi ý về số lượng tối đa các phiên bản bộ mã hoá và giải mã đồng thời được hỗ trợ.
  • Phương thức setPlaybackParams() mới giúp đặt tốc độ phát nội dung nghe nhìn nhằm phát lại chuyển động nhanh hoặc chậm. Tính năng này cũng tự động kéo dài hoặc tăng tốc độ phát âm thanh kết hợp với video.

Tính năng của camera

Bản phát hành này bao gồm các API mới sau đây để truy cập vào đèn pin của máy ảnh và để xử lý lại hình ảnh của máy ảnh:

API Đèn pin

Nếu thiết bị máy ảnh có bộ đèn flash, bạn có thể gọi phương thức setTorchMode() để bật hoặc tắt chế độ đèn pin của bộ nhớ flash mà không cần mở thiết bị máy ảnh. Ứng dụng không có quyền sở hữu độc quyền đối với đơn vị flash hoặc thiết bị máy ảnh. Chế độ đèn pin sẽ tắt và không hoạt động bất cứ khi nào thiết bị máy ảnh không hoạt động hoặc khi các tài nguyên máy ảnh khác vẫn bật đèn pin. Các ứng dụng khác cũng có thể gọi setTorchMode() để tắt chế độ đèn pin. Khi ứng dụng gần đây nhất đang bật chế độ đèn pin đóng, chế độ đèn pin sẽ tắt.

Bạn có thể đăng ký lệnh gọi lại để được thông báo về trạng thái của chế độ đèn pin bằng cách gọi phương thức registerTorchCallback(). Lần đầu tiên đăng ký lệnh gọi lại, lệnh gọi lại sẽ được gọi ngay lập tức với trạng thái chế độ đèn pin của tất cả các thiết bị máy ảnh hiện đã biết có đèn flash. Nếu bạn bật hoặc tắt thành công chế độ đèn pin, thì phương thức onTorchModeChanged() sẽ được gọi.

Xử lý lại API

API Camera2 được mở rộng để hỗ trợ YUV và xử lý lại hình ảnh định dạng mờ riêng tư. Để xác định xem có thể sử dụng các khả năng xử lý lại này hay không, hãy gọi getCameraCharacteristics() và kiểm tra khoá REPROCESS_MAX_CAPTURE_STALL. Nếu thiết bị hỗ trợ xử lý lại, bạn có thể tạo một phiên chụp ảnh có thể xử lý lại bằng cách gọi createReprocessableCaptureSession() và tạo yêu cầu xử lý lại vùng đệm đầu vào.

Sử dụng lớp ImageWriter để kết nối luồng bộ đệm đầu vào với đầu vào đang được xử lý lại của máy ảnh. Để có vùng đệm trống, hãy làm theo mô hình lập trình sau:

  1. Gọi phương thức dequeueInputImage().
  2. Điền dữ liệu vào vùng đệm đầu vào.
  3. Gửi vùng đệm đến máy ảnh bằng cách gọi phương thức queueInputImage().

Nếu bạn đang sử dụng đối tượng ImageWriter cùng với hình ảnh PRIVATE, thì ứng dụng của bạn sẽ không thể truy cập trực tiếp vào dữ liệu hình ảnh đó. Thay vào đó, hãy chuyển hình ảnh PRIVATE trực tiếp đến ImageWriter bằng cách gọi phương thức queueInputImage() mà không cần bản sao vùng đệm.

Lớp ImageReader hiện hỗ trợ luồng hình ảnh định dạng PRIVATE. Tính năng hỗ trợ này cho phép ứng dụng của bạn duy trì hàng đợi hình ảnh tròn gồm các hình ảnh đầu ra ImageReader, chọn một hoặc nhiều hình ảnh rồi gửi đến ImageWriter để xử lý lại máy ảnh.

Các tính năng của Android for Work

Bản phát hành này bao gồm các API mới sau đây dành cho Android for Work:

  • Chế độ kiểm soát nâng cao dành cho thiết bị thuộc quyền sở hữu của doanh nghiệp và mục đích sử dụng một lần: Chủ sở hữu thiết bị hiện có thể kiểm soát các chế độ cài đặt sau để cải thiện hoạt động quản lý thiết bị thuộc quyền sở hữu của công ty và thiết bị dùng một lần:
    • Tắt hoặc bật lại tính năng bảo vệ bàn phím bằng phương thức setKeyguardDisabled().
    • Tắt hoặc bật lại thanh trạng thái (bao gồm cài đặt nhanh, thông báo và cử chỉ vuốt lên điều hướng để khởi chạy Google Hiện hành) bằng phương thức setStatusBarDisabled().
    • Tắt hoặc bật lại tính năng khởi động an toàn bằng hằng số UserManager DISALLOW_SAFE_BOOT.
    • Ngăn màn hình tắt trong khi cắm điện bằng hằng số STAY_ON_WHILE_PLUGGED_IN.
  • Cài đặt và gỡ cài đặt ứng dụng im lặng bằng Chủ sở hữu thiết bị: Giờ đây, Chủ sở hữu thiết bị có thể tự động cài đặt và gỡ cài đặt ứng dụng bằng cách sử dụng các API PackageInstaller, độc lập với Google Play for Work. Giờ đây, bạn có thể cấp phép cho các thiết bị thông qua Chủ sở hữu thiết bị để tìm nạp và cài đặt các ứng dụng mà không cần người dùng tương tác. Tính năng này hữu ích khi bật tính năng cấp phép một lần cho các kiosk hoặc các thiết bị khác như vậy mà không cần kích hoạt Tài khoản Google.
  • Quyền truy cập vào chứng chỉ doanh nghiệp ở chế độ im lặng: Khi một ứng dụng gọi choosePrivateKeyAlias(), trước khi người dùng được nhắc chọn một chứng chỉ, giờ đây, Hồ sơ hoặc Chủ sở hữu thiết bị có thể gọi phương thức onChoosePrivateKeyAlias() để tự động cung cấp bí danh cho ứng dụng yêu cầu. Tính năng này cho phép bạn cấp cho các ứng dụng được quản lý quyền truy cập vào chứng chỉ mà không cần sự tương tác của người dùng.
  • Tự động chấp nhận bản cập nhật hệ thống. Bằng cách đặt chính sách cập nhật hệ thống bằng setSystemUpdatePolicy(), Chủ sở hữu thiết bị hiện có thể tự động chấp nhận bản cập nhật hệ thống, chẳng hạn như trong trường hợp thiết bị kiosk hoặc hoãn cập nhật và ngăn người dùng cập nhật trong tối đa 30 ngày. Hơn nữa, quản trị viên có thể đặt khoảng thời gian hằng ngày để tiến hành cập nhật, chẳng hạn như trong giờ khi thiết bị kiosk không được sử dụng. Khi có bản cập nhật hệ thống, hệ thống sẽ kiểm tra xem ứng dụng kiểm soát chính sách thiết bị đã đặt chính sách cập nhật hệ thống hay chưa và hoạt động theo cách phù hợp.
  • Cài đặt chứng chỉ được uỷ quyền: Giờ đây, Hồ sơ hoặc Chủ sở hữu thiết bị có thể cấp cho ứng dụng bên thứ ba khả năng gọi các API quản lý chứng chỉ DevicePolicyManager sau:
  • Thiết bị di động hiển thị tính năng thông báo trạng thái công việc trong Android for Work
  • Theo dõi mức sử dụng dữ liệu. Giờ đây, Hồ sơ hoặc Chủ sở hữu thiết bị có thể truy vấn số liệu thống kê sử dụng dữ liệu hiển thị trong phần Cài đặt > Dữ liệu sử dụng bằng cách sử dụng các phương thức NetworkStatsManager mới. Chủ sở hữu hồ sơ tự động được cấp quyền truy vấn dữ liệu trên hồ sơ mà họ quản lý, trong khi Chủ sở hữu thiết bị có quyền truy cập vào dữ liệu sử dụng của người dùng chính được quản lý.
  • Quản lý quyền khi bắt đầu chạy:

    Hồ sơ hoặc Chủ sở hữu thiết bị có thể đặt chính sách quyền cho mọi yêu cầu thời gian chạy của tất cả ứng dụng sử dụng setPermissionPolicy() để nhắc người dùng cấp quyền hoặc tự động cấp/từ chối quyền một cách ngầm ẩn. Nếu bạn đặt chính sách thứ hai, thì người dùng không thể sửa đổi lựa chọn của Hồ sơ hoặc Chủ sở hữu thiết bị trong màn hình quyền của ứng dụng trong phần Cài đặt.

  • VPN trong phần Cài đặt: Các ứng dụng VPN hiện đã hiển thị trong phần Settings > More > VPN (Cài đặt > Khác > VPN). Ngoài ra, các thông báo đi kèm với việc sử dụng VPN hiện dành riêng cho cách định cấu hình VPN đó. Đối với Chủ sở hữu hồ sơ, thông báo sẽ dành riêng cho việc liệu VPN được định cấu hình cho hồ sơ được quản lý, hồ sơ cá nhân hay cả hai. Đối với Chủ sở hữu thiết bị, các thông báo sẽ dành riêng cho việc liệu VPN có được định cấu hình cho toàn bộ thiết bị hay không.
  • Thông báo trạng thái công việc: Giờ đây, biểu tượng cặp tài liệu trên thanh trạng thái sẽ xuất hiện bất cứ khi nào một ứng dụng từ hồ sơ được quản lý có hoạt động ở nền trước. Hơn nữa, nếu thiết bị được mở khoá trực tiếp theo hoạt động của một ứng dụng trong hồ sơ được quản lý, thì một thông báo ngắn sẽ hiển thị để thông báo cho người dùng rằng họ đang ở trong hồ sơ công việc.