It would be great to port the existing Yoto Android app to Android Automotive (AAOS). This is different to Android Auto, which mirrors the phone app.
This would allow parents/drivers to access the same Yoto content on their phones directly from their car's main screen, playing that content through the car's speakers when access to a Yoto player or a phone is not possible. Great for road trips!
AAOS is the in car operating system in over 70 vehicles worldwide from a wide array of manufacturers including:
Polestar: 2, 3, 4, 5
Volvo: XC40 Recharge, XC60, XC90, C40, EX30, EX90, S60, S90, V60, V90
General Motors: Chevrolet Tahoe, Suburban, Silverado, Equinox EV; GMC Hummer EV, Sierra, Yukon; Cadillac Lyriq, XT4, Escalade IQ
Renault: Mégane E-Tech Electric, Austral, Captur, Espace, Master, Rafale, Scénic E-Tech
Honda: Accord (2023+), Prologue (2024+)
Nissan: Rogue (2024+), Qashqai (2024+)
Ford: Explorer (2025+), Expedition (2025+)
Lincoln: Nautilus (2024+), Aviator (2025+), Navigator (2025+)
Buick: Envision (2024+), Enclave (2025+)
Acura: ZDX (2024+), MDX (2025+), ADX (2026+)
Stellantis: Chrysler Pacifica, Dodge Durango, Maserati Ghibli, Levante, Quattroporte
BMW: X1 (2023+), X2 (2024+), X3 (2024+), 1 Series (2024+)
Audi: Q4 e-tron, Q5, Q6 e-tron, Q8 e-tron, A3, A5, A6, A7, A8
Porsche: Macan (2024+), Taycan (2025+)
Lucid: Air
Rivian: R1S, R1T
Lotus: Eletre, Emeya
Fiat: New 500
Here are the steps for porting an Android app to AAOS:
Porting an Android app to run on Android Automotive OS (AAOS) involves adapting your existing app (usually designed for phones or tablets) to function properly within the in-vehicle environment. Here’s a breakdown of the key steps to do it right:
🔧 1. Understand the Platform
Android Automotive OS is embedded directly into the car’s hardware (not to be confused with Android Auto, which mirrors from a phone). Apps run natively on the vehicle and must follow automotive-grade UX and safety guidelines.
🚦 2. Determine App Type Support
Currently, only specific types of apps are allowed to be published on AAOS:
Media apps (music, podcasts, etc.)
Navigation apps
Messaging apps
Point of Interest (POI) apps
If your app falls outside these categories, it may not be eligible without OEM partnerships or special use cases.
🧱 3. Set Up Your Environment
Use Android Studio (latest version).
Use Android Automotive OS emulator or supported car hardware.
Target Android API Level 31 or higher (Android 12+ for AAOS).
Install Android Automotive system images via AVD Manager.
🔁 4. Modify Your App for Automotive
Update the Manifest:
<uses-feature android:name="android.hardware.type.automotive" />
For Media apps, extend
MediaBrowserServiceCompat
and integrate with the Media Session API.For Navigation apps, use the Car App Library and Navigation Template.
For Messaging apps, implement templates that allow for voice control and minimized distraction.
🎨 5. Adapt the UI
Use automotive-optimized UI components (Templates from
androidx.car.app
).Do not include touch-intensive, small UI elements — simplicity and readability are key.
Avoid animations or layouts that can distract the driver.
🔐 6. Follow Safety and UX Guidelines
Ensure all functionality is accessible with minimal interaction.
🧪 7. Test Thoroughly
Use emulators or partner with an OEM for real hardware testing.
Validate interactions using steering wheel controls, rotary knobs, and voice commands.
Test in day/night modes and various vehicle resolutions.
🛍️ 8. Prepare for Distribution
Only eligible apps can be published on the Play Store for Automotive.
Fill out the automotive app quality self-checklist.
Submit through the Google Play Console under the appropriate app category.
Optional Tools and Libraries
Jetpack Car App Library: For navigation, POI, and messaging templates.
ExoPlayer: For custom media playback implementations.
Automotive Emulator Images: To simulate a variety of car hardware environments.
If you're working on a specific type of app (like media or nav), I can guide you through the templates and exact code structure you'd need. Want to dig into a media app example?