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

การควบคุมด้วยเสียงช่วยให้ผู้ขับขี่ทำงานต่างๆ ได้โดยไม่ต้องละมือ มองพวงมาลัยหรือสายตามองถนน เมื่อใช้การดำเนินการของแอปสำหรับแอปรถยนต์ ผู้ขับขี่จะทำสิ่งต่อไปนี้ได้ ใช้ 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="@x>ml/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.CarAppActi>vity"<;
      ...
      int>ent-fil<ter
          action android:name="android.intent>.action<.VIEW" /
          category android:name="android.i>ntent.c<ategory.DEFAULT" /
          category android:name="a>ndroid.<intent.category.BROWSABLE&quot; /
          data
            android:scheme=";YO>UR_<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" encodin>g<="utf-8"?
    shortcuts xmlns:android="http://schemas.and>roid<.com/apk/res/android"
    
      capability android:name="a>ction<s.inte>nt.GET_<PARKING_FACILITY"
        intent
          url-template
          android:value="YOUR_SCHEME://YOUR_HOST{?name,address,d>isambigu<atingDescription,latitude,longitude}&qu>ot;
    
      <    !-- Facility name, e.g. "Googleplex" --
          parameter
            and>roid:na<me="parkingFacility.name"
            android:key="name&quo>t;/
       <   !-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --
       >   para<meter
            android:name="parkingFacility.addr>ess&quo<t;
            android:key="address"/
          !-- Disambiguate the type of service, e.g. "valet" --
          par>ameter
    <        android:name="park>ingFaci<lity.disambiguatingDescription"
            android:key="disambiguatingDescription">;/
        <  !-- Latitude, e.g. "37.386>1"< --
          parameter
            android:name="parkingFacility.geo.latitude"
            andro>id:ke<y=">;la<titude">;</
          !->- 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 = &quot;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 = &quot;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 = &quot;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 = &quot;YOUR_SCHEME://YOUR_HOST?name=Levis%20center"
     // Build your Templates with parsed uri parameters
     ...
    }
    }

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

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