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" />
Để 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:
- 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.
- Đă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ý.
- 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
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:
- Triển khai giao diện
Application.OnProvideAssistDataListener
. - Đăng ký trình nghe này bằng cách sử dụng
registerOnProvideAssistDataListener()
. - Để 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ạionProvideAssistContent()
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 đó.
- Phương thức
Context
: - Trường
ApplicationInfo
:
Để 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ứcsetSmallIcon()
vàsetLargeIcon()
. Tương tự, phương thứcaddAction()
hiện chấp nhận đối tượngIcon
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.OnContextClickListener
và GestureDetector.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()
và setRealm()
. Trong đối tượng WifiConfiguration
, bạn có thể đặt các trường FQDN
và providerFriendlyName
.
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()
và 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.Builder
vàAudioTrack.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ượngInputDevice
qua lệnh gọi lại đó, sau đó gọi phương thứchasMicrophone()
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ượngAudioDeviceCallback
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:
- Gọi phương thức
dequeueInputImage()
. - Điền dữ liệu vào vùng đệm đầu vào.
- 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
.
- 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
- 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ứconChoosePrivateKeyAlias()
để 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: - 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.