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

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

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

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

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

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

แผนภูมิแสดงการดำเนินการเกี่ยวกับรถยนต์

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

ข้อจำกัด

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

ข้อกำหนด

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

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

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

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

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

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

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

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

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

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

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

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

    • สำหรับ Android Automotive OS เซสชัน CarAppService ของแอปจะทริกเกอร์ Gemini หรือ Google 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 ได้ที่สร้าง shortcuts.xml

    ใน shortcuts.xml ให้ใช้ capability สำหรับ BII ที่เลือก จากนั้น เพิ่ม <intent> ที่ซ้อนกันเพื่อกำหนดการดำเนินการตามคำสั่งของแอป

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