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

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

Android for Cars คืออะไร

แอปสื่อสำหรับรถยนต์ช่วยให้ผู้ใช้เชื่อมต่อชีวิตดิจิทัลกับรถยนต์ได้อย่างราบรื่น การขยายแอปเดียวกันจากโทรศัพท์ให้พร้อมใช้งานในรถยนต์จะช่วยให้คุณ สร้างประสบการณ์ของผู้ใช้ที่ดีขึ้น คุณทำได้โดยการผสานรวมกับ 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

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

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

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

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

คอมโพเนนต์การเล่น

Media3 มีคอมโพเนนต์หลักหลายอย่างสำหรับ Use Case การเล่น คลาส ที่ประกอบเป็นคอมโพเนนต์เหล่านี้จะคุ้นเคยกับคุณหากคุณเคยทำงานกับ คลังสื่อ Android ก่อนหน้านี้

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

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

ดูข้อมูลเพิ่มเติมได้ที่คอมโพเนนต์การเล่น

ใช้ MediaLibraryService และ MediaLibrarySession

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

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

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

เซสชันสื่อควรประกาศการรองรับคำสั่งของเพลเยอร์ต่อไปนี้เป็นอย่างน้อย

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

เมื่อ Android Auto หรือ Android Automotive OS เชื่อมต่อกับแอปของคุณ ระบบจะขอ คลังเนื้อหาเพื่อแสดง ซึ่งจะทริกเกอร์เมธอดonGetLibraryRoot()การเรียกกลับ คุณสามารถส่งคืนรายการสื่อรูทได้อย่างรวดเร็วเพื่ออนุญาตให้เข้าถึงคลัง ระบบจะเรียกใช้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 ที่ประกาศความสามารถด้านยานยนต์ที่แอปของคุณรองรับ หากต้องการระบุว่าคุณมีแอปสื่อ ให้เพิ่มไฟล์ XML ชื่อ automotive_app_desc.xml ลงในไดเรกทอรี res/xml/ ในโปรเจ็กต์ ไฟล์นี้ควรมีเนื้อหาต่อไปนี้

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

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

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

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

  1. ใน Android Studio ให้คลิก File > New > New Module
  2. เลือกโมดูลยานยนต์ แล้วคลิกถัดไป
  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 ที่ประกาศความสามารถของยานยนต์ ที่แอปของคุณรองรับ

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

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

ตัวกรอง Intent

Android Automotive OS ใช้ Intent ที่ชัดเจนเพื่อทริกเกอร์กิจกรรมในแอปสื่อ ของคุณ อย่าใส่กิจกรรมที่มีตัวกรอง Intent CATEGORY_LAUNCHER หรือ ACTION_MAIN ในไฟล์ 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 แล้ว คุณอาจต้องทำตามขั้นตอนเพิ่มเติมเพื่อเพิ่มประสิทธิภาพแอปให้ใช้งานได้อย่างปลอดภัยยิ่งขึ้นขณะขับรถ ดูคำแนะนำเพิ่มเติมที่จะช่วยให้ผู้ใช้ได้รับประสบการณ์ที่ปลอดภัยและสะดวกสบายได้ที่คำแนะนำทางเทคนิคสำหรับ การดำเนินการด้วยเสียง การป้องกันการรบกวน และการจัดการข้อผิดพลาด

สร้างแอปเล่นวิดีโอสำหรับ 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"/>