ขยายแอปสื่อไปยัง 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 คุณยังสร้างหน้าจอลงชื่อเข้าใช้และการตั้งค่า (สำหรับใช้ขณะจอดรถ) โดยใช้ Views หรือ Compose ได้ด้วย

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

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

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

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

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

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

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

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

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

ติดตั้งใช้งาน MediaLibraryService และ MediaLibrarySession

MediaLibraryService มี API มาตรฐานเพื่อแสดงและอนุญาตให้เข้าถึงคลังสื่อ ซึ่งจำเป็นต้องใช้เมื่อเพิ่มการรองรับ Android Auto หรือ Android AutomotiveOS ลงในแอปสื่อ เนื่องจากแพลตฟอร์มเหล่านี้มี 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 ให้คลิกไฟล์ > ใหม่ > โมดูลใหม่
  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 ในไฟล์ .java ของโมดูลยานยนต์ใหม่

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