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 xây dựng ứng dụng cho Android 6.0, trước tiên, bạn phải tải SDK Android. Sau đó, hãy sử dụng Trình quản lý SDK để tải Nền tảng SDK và Hình ảnh hệ thống Android 6.0 xuống.

Cập nhật cấp độ API mục tiêu

Để 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 của bạn trên một hình ảnh hệ thống Android, kiểm thử rồi phát hành ứng dụng đã cập nhật với thay đổi này.

Bạn có thể sử dụng các API Android mà vẫn hỗ trợ các phiên bản cũ hơn bằng cách thêm các điều kiện vào mã để kiểm tra cấp độ API của hệ thống trước khi thực thi các API không được minSdkVersion 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ợ nhiều phiên bản nền tảng.

Để 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 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 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 bằng 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 bằng 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 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.

Để sử dụng tính năng này trong ứng dụng, 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 hiển thị chức năng xác thực vân tay

Để xem cách triển khai tính năng xác thực vân tay trong ứng dụng, hãy tham khảo Mẫu xác thực sinh trắc học. Để xem minh hoạ cách bạn có thể 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 API vân tay 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 cài đặt).
  2. Đăng ký vân tay mới trong trình mô phỏng bằng cách chuyển đến Settings > Security > Fingerprint (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 vân tay bằng lệnh sau. Sử dụng cùng một lệnh để mô phỏng các sự kiện chạm vân tay trên màn hình khoá hoặc trong ứng dụng.
    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>, theo sau là finger touch <finger_id>.

Xác nhận thông tin xác thực

Ứ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 nhớ mật khẩu bổ sung dành riêng cho ứng dụng và tránh việc 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 cùng 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à cùng một khoá có thể được sử dụng lại sau khi xác thực người dùng 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 thị hộp thoại xác thực lại quá nhiều – trước tiên, ứng dụng của bạn nên thử sử dụng đối tượng mã hoá 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.

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 một ứng dụng với một 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 để sử dụng nhằm xử lý một đường liên kết web cụ thể và bỏ qua việc nhắc người dùng chọn ứ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 trong ứng dụng.

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

Hệ thống 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) để bật 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, thì 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 cần 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 để khởi chạy một hoạt động cụ thể trong ứng dụng. Các mục tiêu chia sẻ trực tiếp này được 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 một 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 phần 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 đây 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 mà bạn muốn hiển thị cho ChooserTargetService, hãy thêm một phần tử <meta-data> có tên "android.service.chooser.chooser_target_service" trong 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 bằng 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 Thao tác bằng giọng nói, bạn có thể xây dựng trải nghiệm trò chuyện bằng giọng nói vào ứng dụng của mình. 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ừ một hành động bằng giọng nói của người dùng. Tuy nhiên, một 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 hoạt động đầu vào của người dùng. Ví dụ: một ứng dụng khác được chạy thông qua tương tác bằng giọng nói cũng có thể gửi ý định khởi chạy tương tác bằng giọng nói. Để xác định xem hoạt động của bạn có được 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 hay không, hãy gọi phương thức isVoiceInteractionRoot(). Nếu một ứng dụng khác đã khởi chạy hoạt động của bạn, thì 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 về Thao tác bằng giọng nói.

Assist API

Bản phát hành này cung cấp 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 trợ lý. Để sử dụng tính năng này, người dùng phải cho phép 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 tiêu chuẩn mà nền tảng truyền đến 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, 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 dành riêng cho hoạt động, hãy ghi đè lệnh gọi lại onProvideAssistData() và tuỳ ý ghi đè lệnh gọi lại onProvideAssistContent() mới.

Thiết bị có bộ nhớ thích ứ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 như thẻ SD. Việc sử dụng thiết bị lưu trữ 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 các ứ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à chúng trả về sẽ tự động thay đổi khi ứng dụng được chuyển giữa thiết bị lưu trữ nội bộ và thiết bị lưu trữ bên ngoài. Khi tạo đườ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 đã tạo trước đó.

Để gỡ lỗi tính năng này, bạn có thể bật tính năng 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 thêm các thay đổi sau đây về API 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 Chỉ chuông báo mới.
  • Giá trị mới của danh mục CATEGORY_REMINDER được 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 thông qua các 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 ứng dụng của bạn tìm hiểu xem thông báo nào hiện đang hoạt động.

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

Bản phát hành này cải thiện khả năng hỗ trợ hoạt động nhập 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 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ị trí trên màn hình cảm ứng sẽ được hợp nhất với thông tin về áp lực và nút từ bút cảm ứng để cung cấp nhiều biểu thức hơn so với khi chỉ dùng màn hình cảm ứng. Ứng dụng có thể theo dõi các thao tác nhấn nút 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 ứng dụng, phương thức getTooltype() sẽ trả về TOOL_TYPE_STYLUS.
  • Đối với các ứ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 tương tự sẽ trả về BUTTON_STYLUS_SECONDARY khi người dùng nhấn vào. Nếu người dùng nhấn cả hai nút cùng lúc, phương thức này sẽ trả về cả hai giá trị được OR với nhau (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 (đối với thao tác nhấn nút bút cảm ứng chính), BUTTON_TERTIARY (đối với thao tác 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 quét tìm 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 cho các lệnh gọi lại khi tìm thấy hoặc nhìn thấy một gói quảng cáo sau một thời gian dài khớ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ợ Hotspot 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 xác thực Hotspot 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 trường FQDNproviderFriendlyName. Phương thức isPasspointNetwork() mới cho biết liệu 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 hiện cho phép ứng dụng yêu cầu nâng cấp độ phân giải màn hình lên chế độ kết xuất 4K trên phần cứng tương thích. Để truy vấn độ phân giải thực tế 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 tăng lên độ phân giải thực tế lớn hơn, hãy lưu ý rằng độ phân giải thực tế 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.

Khi chạy, bạn có thể yêu cầu hệ thống thay đổi độ phân giải vật lý trong ứng dụng 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ế độ màn hình 4K, giao diện người dùng sẽ tiếp tục được kết xuất ở độ 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.

ColorStateList có thể tuỳ chỉnh 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 Android 6.0 (API cấp 23). Phương thức Resources.getColorStateList()Resources.getColor() không còn được dùng nữa. Nếu bạn đang gọi các API này, hãy gọi 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 quá trình xử lý âm thanh trên Android, bao gồm:

  • Hỗ trợ giao thức MIDI bằng các API android.media.midi mới. Sử dụng các API này để gửi và nhận sự kiện MIDI.
  • Các lớp AudioRecord.BuilderAudioTrack.Builder mới để tạo các đối tượng phát và ghi â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 và bồn lưu trữ âm thanh để ghi đè các giá trị mặc định của hệ thống.
  • Hook API để liên kết thiết bị âm thanh và thiết bị đầu vào. Đ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 bắt đầu tìm kiếm bằng giọng nói từ 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ẽ gọi 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ó tích hợp micrô hay không, hãy truy xuất đối tượng InputDevice từ 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.

Tính năng 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ộ các luồng âm thanh và video. Các vùng đệm âm thanh được gửi theo kiểu không tuần tự và được trả về thông qua lệnh gọi lại. Định dạng này cũng hỗ trợ tốc độ phát động.
  • Sự kiện EVENT_SESSION_RECLAIMED mới, cho biết rằng trình quản lý tài nguyên đã thu hồi một phiên do ứng dụng mở. 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 phiên được lấy lại.
  • Mã lỗi ERROR_RECLAIMED mới, cho biết trình quản lý tài nguyên đã thu hồi tài nguyên phương tiện mà bộ mã hoá và giải mã sử dụng. Với trường hợp ngoại lệ này, bạn phải phát hành bộ mã hoá và giải mã vì bộ mã hoá và giải mã đã 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 thực thể bộ mã hoá và giải mã đồng thời được hỗ trợ.
  • Phương thức setPlaybackParams() mới để đặt tốc độ phát nội dung nghe nhìn nhằm phát chuyển động nhanh hoặc chậm. Tính năng này cũng tự động kéo giãn hoặc tăng tốc độ phát âm thanh cùng với video.

Tính năng của máy ảnh

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à để máy ảnh xử lý lại hình ảnh:

API Đèn pin

Nếu thiết bị máy ảnh có đèn flash, bạn có thể gọi phương thức setTorchMode() để bật hoặc tắt chế độ đèn pin của đèn 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 flash hoặc thiết bị máy ảnh. Chế độ đèn pin sẽ tắt và không dùng được 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 không bật được đè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 cuối cùng đã bật chế độ đèn pin đóng, chế độ đèn pin sẽ tắt.

Bạn có thể đăng ký lệnh gọi lại để nhận thông báo về trạng thái chế độ đèn pin bằng cách gọi phương thức registerTorchCallback(). Trong lần đầu tiên được đăng ký, 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 chế độ đèn pin được bật hoặc tắt thành công, phương thức onTorchModeChanged() sẽ được gọi.

API Xử lý lại

API Camera2 được mở rộng để hỗ trợ YUV và tái xử lý hình ảnh ở định dạng mờ riêng tư. Để xác định xem các chức năng xử lý lại này có hoạt động 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 các 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 vùng đệm đầu vào với đầu vào xử lý lại của máy ảnh. Để có bộ đệ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 không thể truy cập trực tiếp vào dữ liệu hình ảnh. Thay vào đó, hãy truyề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ó bất kỳ bản sao vùng đệm nào.

Lớp ImageReader hiện hỗ trợ các 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 hình tròn của hình ảnh đầu ra ImageReader, chọn một hoặc nhiều hình ảnh và gửi các hình ảnh đó đến ImageWriter để máy ảnh xử lý lại.

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 cho Android cho công việc:

  • Chế độ kiểm soát nâng cao cho thiết bị Dùng một lần, thuộc sở hữu của công ty: Giờ đây, Chủ sở hữu thiết bị có thể kiểm soát các chế độ cài đặt sau để cải thiện khả năng quản lý thiết bị thuộc sở hữu của công ty, dùng một lần (CSSU):
    • 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ả phần cài đặt nhanh, thông báo và cử chỉ vuốt lên để điều hướng chạy Google Now) 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 khi cắm sạc bằng hằng số STAY_ON_WHILE_PLUGGED_IN.
  • Chủ sở hữu thiết bị cài đặt và gỡ cài đặt ứng dụng mà không cần thông báo: Giờ đây, Chủ sở hữu thiết bị có thể cài đặt và gỡ cài đặt ứng dụng mà không cần thông báo bằng cách sử dụng API PackageInstaller, độc lập với Google Play cho doanh nghiệp. Giờ đây, bạn có thể cấp phép thiết bị thông qua Chủ sở hữu thiết bị. Chủ sở hữu thiết bị sẽ tìm nạp và cài đặt ứ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ị tương tự khác 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 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, Chủ sở hữu thiết bị hoặc Hồ sơ có thể gọi phương thức onChoosePrivateKeyAlias() để ngầm 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 quyền truy cập vào chứng chỉ cho các ứng dụng được quản lý mà không cần người dùng tương tác.
  • 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 bản cập nhật và ngăn người dùng thực hiện bản cập nhật trong tối đa 30 ngày. Ngoài ra, quản trị viên có thể đặt khoảng thời gian hằng ngày để cập nhật, chẳng hạn như trong những giờ không sử dụng thiết bị kiosk. Khi có bản cập nhật hệ thống, hệ thống sẽ kiểm tra xem ứng dụng trình điều khiển chính sách thiết bị có đặt chính sách cập nhật hệ thống hay không và hành xử cho phù hợp.
  • Cài đặt chứng chỉ được uỷ quyền: Giờ đây, Chủ sở hữu hồ sơ hoặc thiết bị có thể cấp cho ứng dụng bên thứ ba quyền 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, Chủ sở hữu hồ sơ hoặc Chủ sở hữu thiết bị có thể truy vấn số liệu thống kê về mức sử dụng dữ liệu hiển thị trong phần Cài đặt > Dữ liệu bằng cách sử dụng các phương thức NetworkStatsManager mới. Chủ sở hữu hồ sơ 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ị sẽ 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:

    Chủ sở hữu hồ sơ hoặc thiết bị có thể đặt chính sách quyền cho tất cả các yêu cầu khi bắt đầu chạy của tất cả ứng dụng bằng cách sử dụng setPermissionPolicy() để nhắc người dùng cấp quyền hoặc tự động cấp hoặc từ chối quyền một cách thầm lặng. Nếu bạn đặt chính sách sau, người dùng sẽ không thể chỉnh sửa lựa chọn của Chủ sở hữu 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 Settings (Cài đặt): Các ứng dụng VPN hiện hiển thị trong phần Settings > More > VPN (Cài đặt > Thêm > VPN). Ngoài ra, thông báo đi kèm với việc sử dụng VPN hiện chỉ 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ẽ cho biết liệu VPN có được định cấu hình cho hồ sơ được quản lý, hồ sơ cá nhân hay cả hai hay không. Đối với Chủ sở hữu thiết bị, các thông báo 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: Biểu tượng cặp xách trên thanh trạng thái hiện xuất hiện bất cứ khi nào một ứng dụng trong 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 đến 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.