Luồng tích hợp

Việc chọn VIA đang hoạt động được thực hiện bằng ManageAssistActivity trong CarSettings. Quy trình này do ứng dụng PackageInstaller kích hoạt, trong phần Ứng dụng mặc định trên màn hình Cài đặt.

Ứng dụng mặc định trên màn hình Cài đặt

Hình 1. Ứng dụng mặc định trên màn hình Cài đặt

VIA đã chọn được hiển thị cho hệ thống theo hai cách:

  1. Là một phần của dịch vụ hệ thống RolesManager
  2. Bằng VoiceInteractionManagerService thông qua API nội bộ AssistUtils.

Bạn có thể lấy danh sách các VIA đề xuất bằng cách sử dụng RolesManager với tên vai trò là android.app.role.ASSISTANT.

Kích hoạt cụm từ kích hoạt

Android cung cấp AlwaysOnHotwordDetector dưới dạng một bản tóm tắt trên DSP phần cứng. Điều này cung cấp một cách thuận tiện để liên kết VoiceInteractionService với mô hình giọng nói cho tính năng nhận dạng giọng nói luôn bật ở mức năng lượng thấp. Đây là quy trình tương tác phổ biến và nổi tiếng nhất, trong đó người dùng yêu cầu tương tác với Ứng dụng thoại (VA) để bắt đầu một cuộc trò chuyện mới. Các phiên thoại bắt đầu theo cách này được xác định bằng SHOW_SOURCE_ASSIST_GESTURE flag.

Kích hoạt cụm từ kích hoạt

Hình 2. Kích hoạt cụm từ kích hoạt

Chú thích. Các dịch vụ hệ thống xuất hiện màu xanh dương nhạt, các thành phần VIA xuất hiện màu xanh lục.

Kích hoạt PTT

Điều này áp dụng cho thao tác nhấn và giữ hoặc nhấn nhanh nút phần cứng. Trong AAOS, PTT do CarInputService xử lý. Trong quá trình triển khai mặc định, dịch vụ này xử lý các sự kiện đầu vào nhận được thông qua HAL của xe và trong trường hợp cụ thể của hoạt động tương tác bằng giọng nói, dịch vụ này sẽ áp dụng logic sau cho các sự kiện chính:

  • Các sự kiện PTT ngắn (KeyEvent.KEYCODE_VOICE_ASSIST) được chuyển đến VoiceInteractionManagerService để bắt đầu một phiên thoại mới.
  • Trước tiên, các sự kiện PTT dài được chuyển đến bộ thu chiếu (ví dụ: Android Auto hoặc CarPlay), sau đó đến các thiết bị kết nối Bluetooth và cuối cùng là đến ứng dụng VIA cục bộ.

Các phiên bắt đầu bằng luồng này được xác định bằng SHOW_SOURCE_PUSH_TO_TALK.

Kích hoạt PTT

Hình 3. Kích hoạt PTT

Để tích hợp nút điều khiển bằng giọng nói phần cứng vào AAOS, hãy xem phần tích hợp Automotive Key Input (Phương thức nhập bằng khoá ô tô).

Kích hoạt tính năng Nhấn để nói (hoặc nút phần mềm)

Bạn có thể kích hoạt tính năng tương tác bằng giọng nói từ giao diện người dùng hệ thống bằng cách sử dụng AssistUtil. Đây là một API hệ thống ẩn mà chỉ các ứng dụng hệ thống đi kèm mới có thể sử dụng, chẳng hạn như giao diện người dùng hệ thống cho phép:

  • Tương tác với VoiceInteractionManagerService để bắt đầu các phiên điều khiển bằng giọng nói.
  • Xác định VIA hiện đang được chọn.

Để hiển thị linh động ứng dụng VIA đã chọn, giao diện người dùng hệ thống có thể sử dụng RoleManager và theo dõi các thay đổi trên phần tử giữ vai trò cho ROLE_ASSISTANT. Bạn có thể xem ví dụ về cách triển khai tính năng kích hoạt TTT trong CarSystemUI, AssistantButton.

Kích hoạt tính năng Nhấn để nói

Hình 4. Kích hoạt tính năng Nhấn để nói

Tính năng Nhấn để đọc (TTR) của Trợ lý thoại

Trong Ô tô, thông báo được đăng lên Trung tâm thông báo được xác định là thông báo INBOX hoặc INBOX_IN_GROUP (ví dụ: tin nhắn SMS) bao gồm nút hành động Phát, cho phép người dùng đọc to thông báo bằng VIA đã chọn và tuỳ ý trả lời bằng giọng nói.

Thông báo

Hình 5. Thông báo

Để biết thêm thông tin về cách triển khai quy trình này, hãy xem phần Xử lý lệnh nhắn tin.

Chạy VIA từ trình chạy ô tô

Giống như mọi ứng dụng khác, VIA có thể bao gồm một hoặc nhiều hoạt động của trình chạy trong tệp kê khai. Nhà phát triển ứng dụng và nhà sản xuất thiết bị gốc (OEM) chấp nhận cài đặt trước ứng dụng này sẽ quyết định những hoạt động này sẽ làm gì.

Lưu ý quan trọng. Trong Automotive, tất cả hoạt động, bao gồm cả hoạt động của hệ thống, đều phải tuân theo các quy tắc hạn chế về trải nghiệm người dùng khi lái xe. Nếu trải nghiệm mà bạn muốn bật từ biểu tượng trình chạy phải có sẵn khi lái xe, hãy thêm trải nghiệm đó vào danh sách cho phép (nếu bạn là nhà sản xuất thiết bị gốc) hoặc chú thích hoạt động bằng siêu dữ liệu distractionOptimized. Để biết thêm thông tin, hãy xem Nguyên tắc về việc gây mất tập trung cho người lái xe.

DSP và HAL âm thanh

Hãy nhớ xem lại các nguyên tắc mới cập nhật về tính năng ghi âm âm thanh luôn bật và HAL âm thanh đồng thời tại phần Ghi đồng thời. Quyền truy cập vào các API này có thể ảnh hưởng đáng kể đến hiệu suất của tính năng phát hiện cụm từ kích hoạt, như đã giải thích trong phần Phản hồi cụm từ kích hoạt.

Quyền

Cấp quyền đặc quyền của hệ thống

Do người dùng không thể cấp quyền đặc quyền, nên nếu VIA cần bất kỳ quyền nào trong số đó, OEM phải tải trước tệp APK trong hình ảnh hệ thống và cấp các quyền đó một cách rõ ràng trong bản dựng. Xem phần Yêu cầu cấp quyền.

Để làm vậy, hãy thêm phần phụ thuộc danh sách cho phép đặc quyền vào dự án của bạn:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

Thêm tệp quyền danh sách cho phép đặc quyền hệ thống vào thư mục yourdata/etc/car:

vendor/…/data/etc/car/Android.bp

prebuilt_etc {
    name:privapp_allowlist_com.example.myvoicecontrol",
    sub_dir: "permissions",
    src: "com.example.myvoicecontrol.xml",
    filename_from_src: true,
}

vendor/…/data/etc/car/com.example.myvoicecontrol.xml

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.android.car.voicecontrol">
        <permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
    </privapp-permissions>
</permissions>

Cấp trước các quyền có mức độ bảo vệ nguy hiểm

Như đã nêu trong phần Yêu cầu quyền, VIA yêu cầu người dùng đồng ý để truy cập vào một số chức năng nhất định. Một số quyền này được cấp trước cho VoiceInteractionService mặc định (xem DefaultPermissionGrantPolicy.java). Để biết thêm thông tin về quyền cho trình xử lý mặc định, hãy xem phần Quyền chỉ được sử dụng trong trình xử lý mặc định. Bạn cũng có thể cấp trước quyền bằng cách sử dụng tệp cấu hình default-permissions.xml. Để biết thông tin chi tiết về các quy định hạn chế liên quan đến việc cấp quyền trước, hãy xem Mục 9 trong Tài liệu định nghĩa về khả năng tương thích (CDD) của Android.

Lưu ý quan trọng. Trong mọi trường hợp, chỉ VIA mặc định mới có các quyền này được cấp trước. Nếu hệ thống tải sẵn nhiều VIA, thì VIA không mặc định phải yêu cầu người dùng cấp quyền một cách rõ ràng trong quá trình thiết lập hoặc trong lần sử dụng đầu tiên.

Phân phối (cài đặt trước và triển khai bản cập nhật)

Các VIA được cài đặt trước phải nằm trong các phân vùng và thư mục /product/priv-apps hoặc /vendor/priv-apps (xem thêm về các phân vùng tại phần Tổng quan về phân vùngTạo phân vùng sản phẩm).

Trong trường hợp thứ hai, vì phân vùng của nhà cung cấp có thể được cập nhật riêng biệt với hệ thống, nên các ứng dụng được lưu trữ tại đây sẽ không thể truy cập vào các API hệ thống @hide. Tuỳ thuộc vào vị trí của các ứng dụng cài đặt sẵn, bạn có thể cập nhật qua OTA (xem phần Cập nhật OTA) hoặc thông qua bản cập nhật ứng dụng từ cửa hàng ứng dụng.

Tuỳ chỉnh

Như đã đề cập trong phần Các khái niệm dành riêng cho ngành ô tô, tính nhất quán và khả năng tuỳ chỉnh của giao diện người dùng/trải nghiệm người dùng quan trọng hơn trong ngành ô tô so với bất kỳ kiểu dáng nào khác. Để có khả năng tương tác tối đa, bạn nên sử dụng Thư viện giao diện người dùng ô tô của AAOS. Thư viện này bao gồm các thành phần và tài nguyên có thể được tích hợp vào các ứng dụng dành cho ô tô được thiết kế để nhà sản xuất thiết bị gốc (OEM) tuỳ chỉnh. Bằng cách này, bạn có thể tạo một tệp APK duy nhất sao cho giao diện người dùng của tệp APK đó có thể được tuỳ chỉnh theo thiết kế của từng mẫu xe.