การดำเนินการของแอปสำหรับรถยนต์

การควบคุมด้วยเสียงช่วยให้ผู้ขับขี่ทำงานต่างๆ ได้โดยไม่ต้องละมือ มองพวงมาลัยหรือสายตามองถนน เมื่อใช้การดำเนินการของแอปสำหรับแอปรถยนต์ ผู้ขับขี่จะทำสิ่งต่อไปนี้ได้ ใช้ Google Assistant เพื่อควบคุมแอป Android ในระบบสาระบันเทิงโดย โดยพูดคำสั่ง เช่น "Ok Google หาที่จอดรถริมถนนใน ExampleApp"

การดำเนินการของแอปใช้ได้กับแอปรถยนต์ในจุดที่น่าสนใจ (POI) คู่มือนี้ครอบคลุมเรื่อง ข้อกำหนดและข้อจำกัดเฉพาะในการผสานรวมการดำเนินการของแอปเข้ากับจุดที่น่าสนใจ แอป

วิธีการทำงาน

การดำเนินการในแอปขยายฟังก์ชันในแอปให้กับ Assistant ทำให้ผู้ใช้ทำสิ่งต่อไปนี้ได้ เข้าถึงฟีเจอร์ของแอปโดยใช้เสียง เมื่อผู้ใช้เรียกใช้การดำเนินการของแอป Assistant จะจับคู่คำถามกับ Intent ในตัว (BII) ที่ประกาศไว้ใน shortcuts.xml และเปิดแอปของคุณในหน้าจอที่ร้องขอ

คุณประกาศการรองรับ BII ในแอปโดยใช้องค์ประกอบ capability ของ Android เมื่อคุณอัปโหลดแอปโดยใช้ Google Play Console ทาง Google จะลงทะเบียน ความสามารถที่ประกาศไว้ในแอปของคุณและช่วยให้ผู้ใช้เข้าถึงได้ จาก Assistant

แผนภูมิแสดงการจำหน่ายรถยนต์

  1. ผู้ใช้เรียกใช้ Assistant และส่งคำขอด้วยเสียงสำหรับแอปที่เจาะจง
  2. Assistant จะจับคู่คำขอกับโมเดลก่อนการฝึก (BII) และการดึงข้อมูล พารามิเตอร์ใดๆ ที่ BII รองรับ
  3. ในตัวอย่างนี้ Assistant จะจับคู่คำค้นหากับ GET_CHARGING_STATION BII ดึงข้อมูลพารามิเตอร์ตำแหน่ง "SFO" และแปลตำแหน่งเป็น พิกัดทางภูมิศาสตร์
  4. แอปจะทริกเกอร์ผ่านคำจำกัดความของการดำเนินการตามคำสั่งซื้อสำหรับ BII นี้
  5. แอปประมวลผลการดำเนินการตามคำสั่งซื้อโดยแสดงตัวเลือกสถานีชาร์จใน ระบบสาระบันเทิงของคนขับ

ข้อจำกัด

การใช้งานการดำเนินการของแอปในรถยนต์มีข้อจำกัดต่อไปนี้

ข้อกำหนด

ทำตามขั้นตอนต่อไปนี้เพื่อเตรียมแอปสำหรับรถยนต์ให้พร้อมใช้งานการดำเนินการของแอป

ระบุความตั้งใจและการดำเนินการตามคำสั่งซื้อ

ขั้นตอนแรกในการเปิดใช้แอปรถยนต์ด้วยเสียงโดยใช้การดำเนินการของแอปคือการกำหนด คำสั่งเสียงหรือความตั้งใจของผู้ใช้ที่แอปของคุณรองรับ จากนั้นคุณจะต้องกำหนด Fulfillment สำหรับ Intent แต่ละรายการเพื่อระบุวิธีที่แอปควรตอบสนองคำขอ

  • แอปรถยนต์ของคุณรองรับ Intent ใดบ้าง

    การดำเนินการของแอปมีรูปแบบเสียงที่ฝึกไว้แล้วล่วงหน้า ซึ่งเรียกว่า Intent ในตัว (BII) ซึ่งสามารถเข้าใจและตีความคำสั่งเสียงของผู้ใช้ได้เมื่อพวกเขาพูดว่า "Ok Google" ในการตอบสนองต่อคำขอด้วยเสียง เพียงประกาศให้ Assistant ทราบ BII ที่แอปของคุณรองรับ เช่น หากต้องการให้แอปช่วย ในการค้นหาสถานที่จอดรถ คุณใช้GET_PARKING_FACILITY BII. หรือติดตั้งใช้งานGET_CHARGING_STATION BII เพื่อช่วยผู้ใช้ค้นหาเครื่องใช้ไฟฟ้า สถานีชาร์จรถ

  • แอปควรตอบสนองความตั้งใจแต่ละข้ออย่างไร

    แอปของคุณดำเนินการตามคำขอของเสียงได้ด้วยการเปิดตัวแอปเองใน บนหน้าจอ การดำเนินการของแอปจะระบุการดำเนินการตาม Fulfillment ด้วยพารามิเตอร์ที่ดึงมาจาก คำขอของผู้ใช้ ซึ่งจะช่วยให้คุณปรับแต่งการตอบสนองต่อความต้องการของผู้ใช้ได้

ผสานรวมการดำเนินการของแอป

หลังจากกำหนดกลยุทธ์การดำเนินการตามคำสั่งซื้อแล้ว ให้ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้ฟีเจอร์เสียง แอปสำหรับรถยนต์

  1. เปิดกิจกรรมหลัก AndroidManifest.xml และประกาศการรองรับสำหรับ Android ทางลัด คุณใช้องค์ประกอบทางลัด capability เพื่อประกาศกับ Assistant BII ที่แอปของคุณรองรับ สำหรับข้อมูลเพิ่มเติม โปรดดู เพิ่มความสามารถ

     <!-- AndroidManifest.xml -->
     <meta-data
         android:name="android.app.shortcuts"
         android:resource="@xml/shortcuts" />
    
  2. จากนั้นเพิ่มองค์ประกอบ <intent-filter> ลงใน AndroidManifest.xml ช่วงเวลานี้ ช่วยให้ Assistant ใช้ Deep Link เพื่อเชื่อมต่อกับเนื้อหาของแอปได้

    • สำหรับ Fulfillment ของ Android Auto <intent-filter> จะเหมือนกับ บนอุปกรณ์เคลื่อนที่

    • สำหรับ Android Automotive OS เซสชัน CarAppService ของแอปจะทริกเกอร์ Assistant หากต้องการให้เซสชันทริกเกอร์ Deep Link ของคุณ ให้ระบุ <intent-filter> ในองค์ประกอบ <activity> ของ 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. หากยังไม่มีไฟล์ shortcuts.xml โปรดres/xmlของแอป ให้สร้างใหม่ สำหรับข้อมูลเกี่ยวกับวิธีใช้การดำเนินการของแอป แป้นพิมพ์ลัดสำหรับ Android โปรดดูสร้างทางลัด.xml

    ใน shortcuts.xml ให้ใช้ capability สำหรับ BII ที่คุณเลือก ถัดไป เพิ่ม <intent> ที่ฝังไว้เพื่อกำหนด Fulfillment ของแอป

    <!-- 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. สุดท้าย ให้อัปเดตตรรกะ Session() ของแอปรถเพื่อจัดการแอปที่เข้ามาใหม่ การตอบสนองในการดำเนินการ ตัวอย่างต่อไปนี้แสดงการจัดการความตั้งใจสำหรับ 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
     ...
    }
    }

ดูตัวอย่าง ทดสอบ และเผยแพร่แอป

การดำเนินการของแอปมีเครื่องมือในการแสดงตัวอย่างและทดสอบแอป เข้าชม ภาพรวมของการดำเนินการของแอปสำหรับข้อมูลเกี่ยวกับเครื่องมือนี้และรายละเอียดเกี่ยวกับ วิธีเผยแพร่แอปรถยนต์ที่ใช้เสียงพูดได้ไปยัง Play Store