Luồng tích hợp

Việc lựa chọn VIA đang hoạt động được thực hiện bởi ManageAssistActivity trong CarSettings. Dòng này được kích hoạt bởi ứng dụng PackageInstaller , như một phần của phần Ứng dụng mặc định của 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. Các ứng dụng mặc định trên màn hình Cài đặt

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

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

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

Kích hoạt từ nóng

Android cung cấp AlwaysOnHotwordDetector dưới dạng trừu tượng 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ẫu giọng nói để nhận dạng giọng nói luôn bật ở mức năng lượng thấp. Đây là luồng 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 giọng nói (VA) để bắt đầu cuộc trò chuyện mới. 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 từ nóng

Hình 2. Kích hoạt từ nóng

Huyền thoại. Các dịch vụ hệ thống xuất hiện với màu xanh lam nhạt, các thành phần VIA có màu xanh lục.

kích hoạt PTT

Điều này áp dụng cho việc nhấn nút phần cứng dài hoặc ngắn. Trong AAOS, PTT được 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 Vehicle HAL và trong trường hợp tương tác bằng giọng nói cụ thể, 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 hướng đến VoiceInteractionManagerService để bắt đầu phiên thoại mới.
  • Các sự kiện PTT dài trước tiên được chuyển đến các thiết bị thu chiếu (ví dụ: Android Auto hoặc CarPlay), sau đó đến các thiết bị được kết nối Bluetooth và cuối cùng là ứng dụng VIA cục bộ.

Các phiên bắt đầu sử dụ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ới AAOS, hãy xem Tích hợp đầu vào chìa khóa ô tô .

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

Việc kích hoạt tương tác bằng giọng nói từ giao diện người dùng hệ thống được thực hiện bằng cách sử dụng AssistUtil . Đây là API hệ thống ẩn chỉ có thể được sử dụng bởi các ứng dụng hệ thống đi kèm, 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 phiên điều khiển bằng giọng nói.
  • Xác định VIA nào hiện đang được chọn.

Để hiển thị động ứng dụng VIA đã chọn, giao diện người dùng hệ thống có thể sử dụng RoleManager và thực hiện theo các thay đổi về trình giữ vai trò cho ROLE_ASSISTANT . Bạn có thể tìm thấy ví dụ về cách triển khai 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

Trợ lý giọng nói Nhấn để đọc (TTR)

Trong Ô tô, các 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 yêu cầu VIA đã chọn đọc to thông báo và, tùy chọn, 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 luồng này, hãy xem Xử lý lệnh nhắn tin .

Khởi chạy VIA từ trình khởi chạy ô tô

Giống như bất kỳ ứng dụng nào khác, VIA có thể bao gồm một hoặc nhiều hoạt động khởi chạy trên bảng kê khai của chúng. Tùy thuộc vào nhà phát triển ứng dụng và OEM chấp nhận cài đặt sẵn ứng dụng này để quyết định những hoạt động này sẽ làm gì.

Quan trọng. Trong Ô tô, tất cả các hoạt động, bao gồm cả hoạt động của hệ thống, đều bị hạn chế về trải nghiệm người dùng khi lái xe. Nếu trải nghiệm bạn muốn bật từ biểu tượng trình khởi chạy phải có sẵn khi đang lái xe, hãy thêm trải nghiệm đó vào danh sách cho phép (nếu bạn là OEM) 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 Hướng dẫn phân tâm khi lái xe .

DSP và âm thanh HAL

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

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 APK của họ trong hình ảnh hệ thống của họ và cấp các quyền đó một cách rõ ràng trong bản dựng của họ. Xem Yêu cầu quyền .

Để làm như 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 nguy hiểm

Như đã nêu trong Yêu cầu quyền , VIA yêu cầu sự đồng ý của người dùng để truy cập 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ề các quyền dành cho trình xử lý mặc định, hãy xem Quyền chỉ được sử dụng trong trình xử lý mặc định . 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 chi tiết về các hạn chế liên quan đến việc cấp trước quyền, hãy xem Phần 9 trong Tài liệu Định nghĩa Tương thích Android (CDD) .

Quan trọng. Trong mọi trường hợp, chỉ VIA mặc định mới được cấp trước các quyền này. Nếu hệ thống có nhiều VIA được tải sẵn, VIA không mặc định phải yêu cầu rõ ràng quyền đối với người dùng như một phần của 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 sẵn và triển khai các bản cập nhật)

Các VIA được cài đặt sẵn 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 Tổng quan về phân vùngXây dựng phân vùng sản phẩm ).

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

Tùy chỉnh

Như đã đề cập trong các khái niệm dành riêng cho Ô tô , tính nhất quán và tùy chỉnh UI/UX trong ô tô quan trọng hơn 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 AAOS Car UI . 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 ô tô được thiết kế để các OEM tùy chỉnh. Bằng cách này, một APK duy nhất có thể được xây dựng theo cách sao cho giao diện người dùng của nó có thể được tùy chỉnh theo thiết kế của từng mẫu ô tô.