นำแอปของคุณไปใช้กับยานพาหนะที่ทำงานด้วย 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 เวอร์ชันเก่า
แผนภาพต่อไปนี้แสดงวิธีที่คอมโพเนนต์เหล่านี้ทำงานร่วมกันในแอปทั่วไป
ดูข้อมูลเพิ่มเติมได้ที่คอมโพเนนต์การเล่น
ติดตั้งใช้งาน 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 มีข้อกำหนดเฉพาะแพลตฟอร์ม สร้างโมดูลที่สามารถเก็บโค้ดของคอมโพเนนต์เหล่านี้แยกจากโค้ดอื่นๆ ในโปรเจ็กต์ เช่น โค้ดที่ใช้สำหรับแอปบนอุปกรณ์เคลื่อนที่
ทําตามขั้นตอนต่อไปนี้เพื่อเพิ่มโมดูลยานยนต์ลงในโปรเจ็กต์
- ใน Android Studio ให้คลิกไฟล์ > ใหม่ > โมดูลใหม่
- เลือกโมดูลยานยนต์ แล้วคลิกถัดไป
- ป้อนชื่อแอปพลิเคชัน/คลัง ชื่อนี้คือชื่อที่ผู้ใช้จะเห็นสำหรับแอปของคุณใน Android Automotive OS
- ป้อนชื่อข้อบังคับ
- ปรับชื่อแพ็กเกจให้ตรงกับแอป
เลือก API 28: Android 9.0 (Pie) สำหรับ SDK ขั้นต่ำ แล้วคลิกถัดไป
รถยนต์ทุกรุ่นที่รองรับ Android Automotive OS จะใช้ Android 9 (API ระดับ 28) ขึ้นไป ดังนั้นการเลือกค่านี้จะกำหนดเป้าหมายไปยังรถยนต์ที่เข้ากันได้ทั้งหมด
เลือกไม่มีกิจกรรม แล้วคลิกเสร็จสิ้น
หลังจากสร้างโมดูลใน 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"/>