ขยายแอปสื่อไปยัง Android สำหรับรถยนต์

นําแอปไปใช้ในรถยนต์ที่ใช้ Android Auto หรือ Android Automotive OS ใช้สถาปัตยกรรมแอปเดียวซึ่งใช้ได้กับทั้ง 2 กรณี เพื่อให้ผู้ใช้ทุกคนใช้งาน แอป

Android สำหรับรถยนต์คืออะไร

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

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

Android Auto

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

Android Automotive OS

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

หมวดหมู่แอปที่รองรับ

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

แอปสื่อสร้างขึ้นโดยใช้ MediaLibraryService และ MediaSession บน Android Automotive OS คุณยังสร้างหน้าจอลงชื่อเข้าใช้และการตั้งค่าได้ (สำหรับการใช้งาน จอด) โดยใช้ View หรือ Compose

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

สร้างแอปเล่นเสียงสำหรับรถยนต์

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

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

องค์ประกอบการเล่น

Media3 มีองค์ประกอบสำคัญหลายอย่างสำหรับกรณีการใช้งานการเล่น ชั้นเรียน ที่ประกอบขึ้นเป็นคอมโพเนนต์ที่คุณคุ้นเคย หากคุณได้ทำงานกับ ไลบรารีสื่อของ Android ก่อนหน้านี้

แผนภาพต่อไปนี้แสดงให้เห็นว่าคอมโพเนนต์เหล่านี้มาบรรจบกันใน แอปทั่วไป

วันที่ คอมโพเนนต์ต่างๆ ของแอปสื่อที่ใช้ Media3 Connect
  ร่วมกันด้วยวิธีการง่ายๆ ที่หลากหลายเนื่องจากพวกเขาใช้อินเทอร์เฟซร่วมกัน
   และชั้นเรียนต่างๆ
ภาพที่ 1: คอมโพเนนต์แอปสื่อ

สำหรับข้อมูลเพิ่มเติม ดูองค์ประกอบการเล่น

ใช้ MediaLibraryService และ MediaLibrarySession

MediaLibraryService มี API มาตรฐานเพื่อแสดงและอนุญาตการเข้าถึงไลบรารีสื่อของคุณ ต้องระบุข้อมูลนี้เมื่อเพิ่มการรองรับสำหรับ Android Auto หรือ Android Automotive ระบบปฏิบัติการของแอปสื่อ เนื่องจากแพลตฟอร์มเหล่านี้มี UI ของตนเองซึ่งเหมาะสำหรับผู้ขับขี่ สำหรับคลังสื่อของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้งใช้งานและการใช้ MediaLibraryService โปรดดู แสดงเนื้อหาด้วย MediaLibraryService

ใช้เซสชันสื่อสำหรับตัวควบคุมการเล่น MediaSession API จะมี วิธีสากลในการโต้ตอบกับโปรแกรมเล่นเสียงหรือวิดีโอ Jetpack Media3 คลังมี MediaLibrarySession ซึ่งจะขยายอีก MediaSession จึงจะเพิ่ม Content Browsing API

การเชื่อมต่อเซสชันสื่อกับโปรแกรมเล่นทำให้แอป โฆษณาการเล่นสื่อจากภายนอกและเพื่อรับคำสั่งการเล่นจาก แหล่งที่มาภายนอก เช่น Android Auto, Android Automotive OS หรือ Google Assistant สำหรับข้อมูลเพิ่มเติม โปรดดู ควบคุมและโฆษณาการเล่นโดยใช้ MediaSession และ Use a MediaLibrarySession

อย่างน้อยที่สุด เซสชันสื่อของคุณควรประกาศการรองรับโปรแกรมเล่นต่อไปนี้ คำสั่ง:

คู่มือเปิดใช้ตัวควบคุมการเล่น อธิบายวิธีการปรับแต่งตัวควบคุมการเล่นในรถยนต์

เมื่อ Android Auto หรือ Android Automotive OS เชื่อมต่อกับแอปของคุณ แอปจะขอ ไลบรารีเนื้อหาที่จะแสดง ซึ่งจะทริกเกอร์ Callback onGetLibraryRoot() คุณสามารถส่งคืนรายการสื่อรากได้อย่างรวดเร็วเพื่ออนุญาตการเข้าถึง ไลบรารี ระบบจะเรียกเมธอด Callback onGetChildren() เมื่อ Android Auto หรือ Android Automotive OS พยายามเรียกดูเนื้อหาของคุณในระดับที่ลึกขึ้น ไลบรารี

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

ประกาศการรองรับ Android Auto

ใช้รายการไฟล์ Manifest ต่อไปนี้เพื่อประกาศว่าแอปโทรศัพท์ของคุณรองรับ Android Auto

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

รายการไฟล์ Manifest นี้หมายถึงไฟล์ XML ที่แจ้งว่า Automotive ที่แอปของคุณรองรับ หากต้องการระบุว่าคุณมีแอปสื่อ ให้เพิ่ม ไฟล์ XML ชื่อ automotive_app_desc.xml ไปยังไดเรกทอรี res/xml/ ใน ไฟล์นี้ควรมีเนื้อหาต่อไปนี้

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

ประกาศการรองรับ Android Automotive OS

คุณต้องสร้างโมดูลยานยนต์ เนื่องจากตรรกะในแอปบางรายการไม่สามารถทำได้ แชร์กับแอปยานยนต์ องค์ประกอบบางอย่างของ Android Automotive OS เช่น เป็นไฟล์ Manifest มีข้อกำหนดเฉพาะแพลตฟอร์ม สร้างโมดูลที่สามารถ เก็บโค้ดสำหรับคอมโพเนนต์เหล่านี้แยกจากโค้ดอื่นๆ ในโปรเจ็กต์ของคุณ เช่น โค้ดที่ใช้สำหรับแอปบนอุปกรณ์เคลื่อนที่ของคุณ

ทำตามขั้นตอนต่อไปนี้เพื่อเพิ่มโมดูลยานยนต์ลงในโปรเจ็กต์

  1. ใน Android Studio ให้คลิกไฟล์ > ใหม่ > โมดูลใหม่
  2. เลือก Automotive Module แล้วคลิก Next
  3. ป้อนชื่อแอปพลิเคชัน/ไลบรารี นี่คือชื่อที่ผู้ใช้จะเห็น แอปของคุณใน Android Automotive OS
  4. ป้อนชื่อโมดูล
  5. ปรับชื่อแพ็กเกจให้ตรงกับแอปของคุณ
  6. เลือก API 28: Android 9.0 (Pie) สำหรับ SDK ขั้นต่ำ แล้วคลิก ถัดไป

    รถยนต์ทั้งหมดที่รองรับ Android Automotive OS สามารถทำงานใน Android 9 (API ระดับ 28) หรือ สูงขึ้น ดังนั้นการเลือกค่านี้จึงกำหนดเป้าหมายทั้งหมด ที่เข้ากันได้

  7. เลือกไม่มีกิจกรรม แล้วคลิกเสร็จสิ้น

หลังจากสร้างโมดูลใน Android Studio แล้ว ให้เปิด AndroidManifest.xml ใน โมดูลยานยนต์ใหม่

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

application มีข้อมูลแอปมาตรฐานและ uses-feature ที่ประกาศการรองรับ Android Automotive OS โปรดทราบว่ามี ไม่ใช่กิจกรรมที่ประกาศในไฟล์ Manifest

หากคุณใช้การตั้งค่าหรือกิจกรรมการลงชื่อเข้าใช้ ให้เพิ่มที่นี่ กิจกรรมเหล่านี้มีการทริกเกอร์โดยระบบโดยใช้ Intent ของคุณและเป็นกิจกรรมเดียวที่คุณประกาศภายในไฟล์ Manifest แอป Android Automotive OS

หลังจากเพิ่มการตั้งค่าหรือกิจกรรมการลงชื่อเข้าใช้แล้ว ให้กรอกไฟล์ Manifest ให้เสร็จสมบูรณ์โดย การตั้งค่าแอตทริบิวต์ android:appCategory="audio" ในองค์ประกอบ application และเพิ่มองค์ประกอบ uses-feature ต่อไปนี้

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

การตั้งค่าฟีเจอร์เหล่านี้อย่างชัดเจนให้กับ required="false" จะช่วยให้แน่ใจว่า แอปของคุณไม่ขัดแย้งกับฟีเจอร์ฮาร์ดแวร์ที่ใช้ได้ใน Automotive OS อุปกรณ์

ใช้รายการไฟล์ Manifest ต่อไปนี้เพื่อประกาศว่าแอปของคุณรองรับ Android Automotive OS:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

รายการไฟล์ Manifest นี้อ้างถึงไฟล์ XML ที่ประกาศ Automotive ที่แอปของคุณรองรับ

หากต้องการระบุว่าคุณมีแอปสื่อ ให้เพิ่มไฟล์ XML ชื่อ automotive_app_desc.xml ไปยังไดเรกทอรี res/xml/ ในโปรเจ็กต์ของคุณ รวม เนื้อหาต่อไปนี้ในไฟล์นี้

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

ตัวกรอง Intent

Android Automotive OS ใช้ Intent แบบเจาะจงเพื่อทริกเกอร์กิจกรรมในสื่อ แอป อย่ารวมกิจกรรมใดๆ ที่มี CATEGORY_LAUNCHER หรือ ACTION_MAIN Intent ตัวกรองในไฟล์ Manifest

กิจกรรมดังเช่นในตัวอย่างต่อไปนี้มักจะกำหนดเป้าหมายโทรศัพท์ หรือ อุปกรณ์เคลื่อนที่อื่นๆ ประกาศกิจกรรมเหล่านี้ในโมดูลที่สร้าง แอปโทรศัพท์ ไม่ได้อยู่ในโมดูลที่สร้างแอป Android Automotive OS

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

ขั้นตอนต่อไป

ตอนนี้คุณมีแอปสำหรับ Android Auto และ Android Automotive OS แล้ว คุณต้องการทำตามขั้นตอนเพิ่มเติมเพื่อเพิ่มประสิทธิภาพแอปให้ใช้งานได้อย่างปลอดภัยยิ่งขึ้น ในการขับขี่ ดูคำแนะนำเพิ่มเติมที่ช่วยให้มั่นใจว่าผู้ใช้ปลอดภัยและสะดวก โปรดดูคำแนะนำทางเทคนิคสำหรับ การสั่งงานด้วยเสียง การป้องกันการถูกเบี่ยงเบนความสนใจ และ Error handling

สร้างแอปเล่นวิดีโอสำหรับ Android Automotive OS

เนื่องจากแอปวิดีโอจัดอยู่ในหมวดหมู่แอปสื่อในรถยนต์แยกต่างหาก คุณต้องทำดังนี้ โปรดคำนึงถึงข้อกำหนดเฉพาะบางประการสำหรับแอปวิดีโอ ตามที่อธิบายไว้ใน สร้างแอปที่พักไว้สําหรับ Android Automotive OS และ สร้างแอปวิดีโอสำหรับ Android Automotive OS คุณต้องทำตามวิธีการต่อไปนี้

ทำเครื่องหมายแอปของคุณเป็นแอปวิดีโอ

หากต้องการระบุว่าแอปรองรับวิดีโอ ให้เพิ่มไฟล์ XML ชื่อ automotive_app_desc.xml ไปยังไดเรกทอรี res/xml/ ในโปรเจ็กต์ของคุณ ด้วยวิธีนี้ ต้องมีเนื้อหาต่อไปนี้

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

จากนั้นในองค์ประกอบ application ของไฟล์ Manifest ให้เพิ่มข้อมูลต่อไปนี้ องค์ประกอบ meta-data ที่อ้างอิงไฟล์ XML:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>