นำแอปของคุณไปไว้ในยานพาหนะที่ใช้ 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 มีคอมโพเนนต์หลักหลายรายการสำหรับกรณีการใช้งานการเล่น คุณจะคุ้นเคยกับคลาสที่ประกอบขึ้นเป็นคอมโพเนนต์เหล่านี้หากเคยใช้ไลบรารีสื่อของ Android เวอร์ชันก่อนๆ
แผนภาพต่อไปนี้แสดงให้เห็นว่าคอมโพเนนต์เหล่านี้ทำงานร่วมกันในแอปทั่วไปอย่างไร
ดูข้อมูลเพิ่มเติมได้ที่ คอมโพเนนต์การเล่น
ใช้ MediaLibraryService และ MediaLibrarySession
A MediaLibraryService
มี API ที่ได้มาตรฐานเพื่อให้บริการและอนุญาตให้เข้าถึงคลังสื่อ
คุณต้องใช้ 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() คุณสามารถแสดงรายการสื่อรูทได้อย่างรวดเร็วเพื่ออนุญาตให้เข้าถึงคลัง ระบบจะเรียกเมธอด 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 ที่ประกาศความสามารถด้านยานยนต์ที่แอปของคุณรองรับ หากต้องการระบุว่าคุณมีแอปสื่อ ให้เพิ่มไฟล์ 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 ในโมดูลยานยนต์ใหม่
<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 ที่ชัดเจนเพื่อทริกเกอร์กิจกรรมในแอปสื่อ อย่าใส่กิจกรรมใดๆ ที่มี
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 แล้ว คุณอาจต้องการทำตามขั้นตอนเพิ่มเติมเพื่อเพิ่มประสิทธิภาพแอปให้ใช้งานได้อย่างปลอดภัยมากขึ้นขณะขับรถ ดูคำแนะนำเพิ่มเติมที่จะช่วยให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานที่ปลอดภัยและสะดวกสบายได้ที่คู่มือทางเทคนิคสำหรับการดำเนินการด้วยเสียง, การป้องกันการรบกวน, และ การจัดการข้อผิดพลาด
สร้างแอปเล่นวิดีโอสำหรับ Android Automotive OS
เนื่องจากระบบจะจัดหมวดหมู่แอปวิดีโอแยกจากแอปสื่อในรถยนต์ คุณจึงต้องทราบข้อกำหนดเฉพาะบางอย่างสำหรับแอปวิดีโอ ดังที่อธิบายไว้ใน สร้างแอปสำหรับจอดรถสำหรับรถยนต์ และ สร้างแอปวิดีโอสำหรับ Android Automotive OS โดยทำตามวิธีการต่อไปนี้
ทำเครื่องหมายแอปของคุณเป็นแอปวิดีโอ
หากต้องการระบุว่าแอปของคุณรองรับวิดีโอ ให้เพิ่มแอตทริบิวต์
android:appCategory="video" ลงใน<application>
องค์ประกอบของไฟล์ Manifest
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
ประกาศฟีเจอร์ฮาร์ดแวร์ของ Android Automotive OS
หากต้องการประกาศว่าแอปของคุณรองรับอุปกรณ์ Android Automotive OS ให้เพิ่มองค์ประกอบ
android.hardware.type.automotive <uses-feature> ลงในไฟล์ Manifest
ดู
ประกาศฟีเจอร์ฮาร์ดแวร์ของ AAOS
สำหรับคำแนะนำเกี่ยวกับวิธีตั้งค่าแอตทริบิวต์ android:required เป็น "false" หรือ
"true"
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>