Hành động trong ứng dụng cho ô tô

Tính năng điều khiển bằng giọng nói cho phép người lái xe thực hiện các công việc mà không cần rời tay khỏi vô-lăng hay rời mắt khỏi đường đi. Với Hành động trong ứng dụng cho ô tô, người lái xe có thể dùng Trợ lý Google để điều khiển các ứng dụng Android trên hệ thống thông tin giải trí của họ bằng cách nói những cụm từ như "Ok Google, tìm chỗ đỗ xe trên đường qua ExampleApp".

Hành động trong ứng dụng tương thích với ứng dụng địa điểm yêu thích (POI) cho ô tô. Hướng dẫn này đưa ra các điểm hạn chế và yêu cầu cụ thể để tích hợp Hành động trong ứng dụng vào ứng dụng POI.

Cách hoạt động

Hành động trong ứng dụng giúp bổ sung tính năng Trợ lý cho ứng dụng sang để người dùng có thể truy cập các tính năng của ứng dụng qua giọng nói. Khi người dùng gọi một Hành động trong ứng dụng, Trợ lý sẽ so khớp truy vấn đó với một ý định tích hợp (BII) được khai báo trong tài nguyên shortcuts.xml của ứng dụng và chạy ứng dụng trên màn hình yêu cầu.

Bạn sẽ khai báo tính năng hỗ trợ cho BII trong ứng dụng bằng các phần tử capability của Android. Khi bạn tải ứng dụng lên bằng Google Play Console, Google sẽ đăng ký cho các tính năng được khai báo trong ứng dụng và người dùng có thể truy cập vào những tính năng đó qua Trợ lý.

Biểu đồ minh hoạ phương thức thực hiện cho ô tô.

  1. Người dùng kích hoạt Trợ lý và đưa ra yêu cầu bằng giọng nói cho một ứng dụng cụ thể.
  2. Trợ lý sẽ so khớp yêu cầu của bạn với một mô hình luyện sẵn (BII) và trích xuất mọi tham số mà BII hỗ trợ.
  3. Trong ví dụ này, Trợ lý sẽ so khớp truy vấn đó với BII GET_CHARGING_STATION, trích xuất tham số vị trí "SFO" và chuyển đổi vị trí đó thành toạ độ địa lý tương ứng.
  4. Ứng dụng được kích hoạt thông qua định nghĩa về phương thức thực hiện của nó cho BII này.
  5. Ứng dụng xử lý phương thức thực hiện giúp hiển thị các lựa chọn về trạm sạc trên hệ thống thông tin giải trí của người lái xe.

Các điểm hạn chế

Quá trình triển khai Hành động trong ứng dụng cho ô tô có các điểm hạn chế sau:

Yêu cầu

Hãy thực hiện các bước sau để chuẩn bị ứng dụng cho ô tô nhằm triển khai Hành động trong ứng dụng:

  • Đáp ứng các yêu cầu chung về ứng dụng Android để triển khai Hành động trong ứng dụng.
  • Thêm phần phụ thuộc của Thư viện ứng dụng cho ô tô. Để biết thông tin chi tiết, hãy xem phần Khai báo phần phụ thuộc.

Xác định ý định và phương thức thực hiện

Bước đầu tiên trong việc dùng giọng nói để bật ứng dụng cho ô tô bằng Hành động trong ứng dụng là xác định xem ứng dụng của bạn hỗ trợ những lệnh thoại cho người dùng hay ý định nào. Tiếp đến, bạn hãy xác định một phương thức thực hiện cho từng ý định để chỉ định cách ứng dụng của bạn sẽ đáp ứng yêu cầu.

  • Ứng dụng cho ô tô của bạn hỗ trợ những ý định nào?

    Hành động trong ứng dụng cung cấp các mẫu giọng nói luyện sẵn, hay còn gọi là ý định tích hợp (BII), với khả năng hiểu và diễn giải lệnh thoại của người dùng khi họ nói "Ok Google". Để phản hồi các yêu cầu bằng giọng nói, bạn chỉ cần khai báo các BII mà ứng dụng của bạn hỗ trợ với Trợ lý. Ví dụ: nếu muốn ứng dụng của bạn hỗ trợ tìm chỗ đỗ xe, hãy triển khai BII GET_PARKING_FACILITY. Hoặc triển khai BII GET_CHARGING_STATION để giúp người dùng tìm thấy trạm sạc cho ô tô chạy điện.

  • Ứng dụng của bạn nên thực hiện từng ý định như thế nào?

    Ứng dụng của bạn tự chạy trên màn hình thích hợp để thực hiện yêu cầu bằng giọng nói. Hành động trong ứng dụng cung cấp phương thức thực hiện bằng các tham số trích xuất từ yêu cầu của người dùng nhằm giúp bạn điều chỉnh nội dung phản hồi cho phù hợp với nhu cầu của người dùng.

Tích hợp Hành động trong ứng dụng

Sau khi xác định chiến lược về phương thức thực hiện, hãy làm theo các bước sau để bật ứng dụng cho ô tô bằng giọng nói:

  1. Mở hoạt động chính AndroidManifest.xml và khai báo dịch vụ hỗ trợ cho lối tắt trên Android. Bạn sử dụng các phần tử lối tắt capability để khai báo các BII mà ứng dụng của bạn hỗ trợ với Trợ lý. Để biết thêm thông tin, hãy xem bài viết Thêm tính năng.

     <!-- AndroidManifest.xml -->
     <meta-data
         android:name="android.app.shortcuts"
         android:resource="@xml/shortcuts" />
    
  2. Tiếp theo, hãy thêm phần tử <intent-filter> vào AndroidManifest.xml. Việc này khiến Trợ lý có thể dùng các đường liên kết sâu để kết nối với nội dung của ứng dụng.

    • Đối với phương thức thực hiện của Android Auto, <intent-filter> cũng giống như của ứng dụng dành cho thiết bị di động.

    • Đối với Android Automotive OS, phiên CarAppService của ứng dụng sẽ kích hoạt Trợ lý. Để cho phép một phiên kích hoạt đường liên kết sâu, hãy chỉ định một <intent-filter> trong phần tử <activity> của AndroidManifest.xml.

    <!-- AndroidManifest.xml -->
    <activity
      ...
      android:name="androidx.car.app.activity.CarAppActivity">
      ...
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data
            android:scheme="YOUR_SCHEME"
            android:host="YOUR_HOST" />
      </intent-filter>
    </activity>
    
  3. Nếu bạn chưa có tệp shortcuts.xml trong thư mục res/xml của ứng dụng, hãy tạo một tệp mới. Để biết thông tin về cách Hành động trong ứng dụng dùng lối tắt trên Android, xem bài viết Tạo shortcuts.xml.

    Trong shortcuts.xml, hãy triển khai capability cho BII bạn chọn. Tiếp theo, thêm <intent> được lồng để xác định phương thức thực hiện cho ứng dụng.

    <!-- shortcuts.xml -->
    <?xml version="1.0" encoding="utf-8"?>
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    
      <capability android:name="actions.intent.GET_PARKING_FACILITY">
        <intent>
          <url-template
          android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}">
    
          <!-- Facility name, e.g. "Googleplex" -->
          <parameter
            android:name="parkingFacility.name"
            android:key="name"/>
          <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" -->
          <parameter
            android:name="parkingFacility.address"
            android:key="address"/>
          <!-- Disambiguate the type of service, e.g. "valet" -->
          <parameter
            android:name="parkingFacility.disambiguatingDescription"
            android:key="disambiguatingDescription"/>
          <!-- Latitude, e.g. "37.3861" -->
          <parameter
            android:name="parkingFacility.geo.latitude"
            android:key="latitude"/>
          <!-- Longitude, e.g. "-122.084" -->
          <parameter
            android:name="parkingFacility.geo.longitude"
            android:key="longitude"/>
        </intent>
      </capability>
    </shortcuts>
    
  4. Cuối cùng, hãy cập nhật logic Session() của ứng dụng cho ô tô để xử lý phương thức thực hiện gọi đến cho Hành động trong ứng dụng. Các mẫu sau đây minh hoạ cách xử lý ý định cho Session.onCreateScreen()Session.onNewIntent().

    onCreateScreen()

    Kotlin

    @Override
    fun onCreateScreen(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
      ...
     }
    }
    

    Java

    @Override
    public Screen onCreateScreen(@NonNull Intent intent) {
    if (intent.getData() != null) {
      Uri uri = intent.getData();
      // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
      // Build your Templates with parsed uri parameters
    ...
    }
    }
    

    onNewIntent()

    Kotlin

    @Override
    fun onNewIntent(@NonNull intent: Intent): Screen {
      if (intent.getData() != null) {
          val uri: Uri = intent.getData()
          // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
          // Build your Templates with parsed uri parameters
          ...
      }
    }
    

    Java

    @Override
    public void onNewIntent(@NonNull Intent intent) {
    if (intent.getData() != null) {
     Uri uri = intent.getData();
     // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
     // Build your Templates with parsed uri parameters
     ...
    }
    }
    

Xem trước, kiểm thử và phát hành ứng dụng

Hành động trong ứng dụng cung cấp công cụ để xem trước và kiểm thử ứng dụng. Hãy truy cập vào phần Tổng quan về Hành động trong ứng dụng để biết thông tin về công cụ này cũng như để biết thông tin chi tiết về cách phát hành ứng dụng cho ô tô có hỗ trợ tính năng thoại lên Cửa hàng Play.