Car App: essence of CarPlay and Android Auto development

Author: IT Sectr Published: 2026-02-15 Reading time: 9 min

Car App is an application for an in-vehicle infotainment system, integrated with Apple CarPlay and Android Auto. CarPlay is Apple's technology that projects the iPhone interface onto the car screen and is controlled via Siri, touch screen, or steering wheel buttons. Android Auto is Google's similar technology for Android smartphones. Car App development involves creating an app in Swift with the CarPlay framework and SiriKit for iOS, and in Kotlin with Car App Library, MediaBrowserService, and NavigationManager for Android. Car App support is becoming a standard for modern vehicles — according to Apple, 98% of new cars in the US support CarPlay, and Android Auto is available in more than 200 models.

Key Takeaways

  • Car App — an application for CarPlay (iOS) and Android Auto (Android), optimized for use while driving
  • Apple CarPlay — projects the iPhone interface onto the car screen, controlled via Siri and touch
  • Android Auto — projects an Android smartphone onto the car screen with Google Assistant support
  • CarPlay framework — CPInterfaceController, CPTemplate, CPListItem for building interfaces in Swift
  • Car App Library — Android library for creating Automotive applications with MediaBrowserService and NavigationManager

What is a Car App

Car App is an application that runs on an in-vehicle infotainment system (IVI) through smartphone projection — Apple CarPlay for iOS and Android Auto for Android. Unlike Android Automotive OS (built-in OS in the car), CarPlay and Android Auto are extensions of a mobile app that run on the phone and project the interface onto the car screen. A Car App is your existing iOS/Android app that implements CarPlay or Android Auto protocols.

Key Car App categories: navigation (Apple Maps, Google Maps, Waze, Sygic), audio (Spotify, Apple Music, YouTube Music, Audible, Castbox), messaging (reading aloud and dictation via Siri/Google Assistant), automotive features (EV charging, parking, vehicle status), VOIP calls (WhatsApp, Zoom). Each category has its own interface template — ListTemplate, MapTemplate, AudioTemplate. The system itself determines which category the app supports based on registered Intents.

Car App limitations: Apple and Google strictly control UX for safety — minimal number of elements, large buttons (minimum 48x48 pt), no text input (voice only), automatic interface dimming while driving, no video. Response time to press must be less than 100 ms. All apps undergo mandatory moderation (App Review for CarPlay, Google Play Console + CTS for Android Auto).

Apple CarPlay: CarPlay framework and SiriKit

CarPlay framework (formerly CPKit) is Apple's framework for creating CarPlay applications in Swift. The key class is CPInterfaceController, which manages template navigation. CPInterfaceController contains a template stack: CPListTemplate (lists), CPMapTemplate (navigation), CPNowPlayingTemplate (audio), CPVoiceControlTemplate (voice control). CPListTemplate contains CPListItem — list items with an icon, text, and action.

SiriKit for CarPlay — a SiriKit extension for voice control of the app in the car. The app registers Intents (INPlayMediaIntent — playback, INStartWorkoutIntent — workout, INSendMessageIntent — messages). Siri automatically activates when CarPlay connects and is available via the voice control button on the steering wheel. SiriKit CarPlay supports CarPlay Dashboard — widgets on the CarPlay home screen for displaying information from the app (destination, current track).

CarPlay connection process: iPhone connects to the car via Lightning/USB-C cable or wirelessly (CarPlay Wireless, starting with iOS 9). After connection, iOS automatically starts a CarPlay session if the app implements CPApplicationDelegate. The developer does not control the connection moment — the system calls delegate methods when the session starts and ends. CarPlay supports multitasking: navigation works in the background when switching to music, and voice prompts continue to sound.

Android Auto: Car App Library

Android Car App Library — an Android library for creating apps compatible with Android Auto. Basic components: CarAppService — entry point for Android Auto; Session — session lifecycle management; Screen — each app screen; CarScreenManager — display management. The app supports MediaBrowserService for media content and NavigationManager for navigation prompts.

MediaBrowserService — a key component for audio apps. The app implements MediaBrowserService and MediaSession to manage playback. Android Auto automatically displays controls (Play/Pause, Next, Previous) and the track list. NavigationManager is used for navigation apps — it relays turn instructions, route status, and alerts. NavigationManager supports CarNotification for displaying navigation prompts in the Android Auto status bar.

Android Auto requirements: the app must have category="android.intent.category.APP_AUTO" in the manifest; it must use AndroidX and minimum SDK 26+; support dark theme (DayNight); support touch and voice control; comply with the Android Auto Compatibility Test Suite (CTS). Google Play checks every app for compliance with safety and UX requirements. The certification process takes 1–4 weeks.

Code Examples: Swift and Kotlin

Example of a navigation app for CarPlay in Swift using the CarPlay framework.

swift
import CarPlay

class CarPlaySceneDelegate: CPTemplateApplicationSceneDelegate {

    func templateApplicationScene(
        _ templateApplicationScene: CPTemplateApplicationScene,
        didConnect interfaceController: CPInterfaceController
    ) {
        let searchItem = CPListItem(
            text: "Search address",
            detailText: "Enter destination"
        )
        searchItem.handler = { _, completion in
            // Open the search screen
            completion()
        }

        let favoritesItem = CPListItem(
            text: "Favorites",
            detailText: "Saved addresses"
        )
        favoritesItem.handler = { _, completion in
            showFavorites()
            completion()
        }

        let section = CPListSection(items: [searchItem, favoritesItem])
        let listTemplate = CPListTemplate(
            title: "Navigation",
            sections: [section]
        )

        interfaceController.setRootTemplate(listTemplate, animated: true)
    }

    func showFavorites() {
        // Display a list of favorite addresses
    }
}

// SiriKit Intent for voice control
class NavigationIntentHandler: NSObject, INSearchForMessagesIntentHandling {
    func handle(intent: INSearchForMessagesIntent,
                completion: @escaping (INSearchForMessagesIntentResponse) -> Void) {
        // Processing a voice command via Siri
        let response = INSearchForMessagesIntentResponse(
            code: .success, userActivity: nil
        )
        completion(response)
    }
}

Key points: CPTemplateApplicationSceneDelegate — entry point for the CarPlay session; CPInterfaceController manages the template stack; CPListTemplate and CPListItem — basic UI components; .handler — click handler for each list item.

Example of a navigation app for Android Auto in Kotlin with Car App Library:

kotlin
// CarAppService — entry point for Android Auto
class NavigationCarAppService : CarAppService() {
    override fun createSession(): Session = NavigationSession()
}

// Session — session lifecycle management
class NavigationSession : Session() {
    override fun onCreateScreen(manager: ScreenManager): Screen {
        return MainScreen(carContext)
    }
}

// MainScreen — main screen with navigation
class MainScreen(carContext: CarContext) : Screen(carContext) {
    override fun onGetTemplate(): Template {
        val searchAction = Action.Builder()
            .setTitle("Search address")
            .setOnClickListener { showSearchScreen() }
            .build()

        val favoritesAction = Action.Builder()
            .setTitle("Favorites")
            .setOnClickListener { showFavorites() }
            .build()

        return ListTemplate.Builder()
            .setTitle("Navigation")
            .setHeaderAction(Action.APP_ICON)
            .addAction(searchAction)
            .addAction(favoritesAction)
            .build()
    }

    private fun showSearchScreen() {
        screenManager.push(SearchScreen(carContext))
    }

    private fun showFavorites() {
        screenManager.push(FavoritesScreen(carContext))
    }
}

// AndroidManifest — service registration
<service
    android:name=".NavigationCarAppService"
    android:exported="true">
    <intent-filter>
        <action
            android:name="androidx.car.app.action.NAVIGATION" />
    </intent-filter>
    <category
        android:name="android.intent.category.APP_AUTO" />
</service>

Key points: CarAppService — entry point for Android Auto; Session — lifecycle management; Screen — each app screen, returns a Template; ListTemplate — list template with Action; category.APP_AUTO — required category in the manifest.

Requirements and Publishing

Apple CarPlay requirements: the app must comply with CarPlay Distraction Design Guidelines — minimum button size 48x48 pt, text contrast 4.5:1, no animation or video, VoiceOver support. Publishing — via App Store Connect, the app goes through standard Apple moderation. You must specify CarPlay support in App Store Connect and provide CarPlay interface screenshots. CarPlay apps cannot be free without ads — Apple charges a 30% commission (15% for small businesses) on in-app purchases.

Android Auto requirements: the app must comply with Android Auto Design Guidelines and pass the Android Auto Compatibility Test Suite (CTS). Publishing — via Google Play Console, you must specify the "Android Auto" category in the compatible devices list. Google Play checks: dark theme support (DayNight), correct behavior on connection loss, screen rotation handling, voice control support via Google Assistant. Android Auto apps do not require additional commission — the standard Google Play model (15-30%).

ParameterApple CarPlayAndroid Auto
FrameworkCarPlay framework (CPInterfaceController)Car App Library (CarAppService)
LanguageSwiftKotlin
Voice AssistantSiriKitGoogle Assistant
InterfaceCPListTemplate, CPMapTemplateListTemplate, MapTemplate
MediaMPNowPlayingInfoCenterMediaBrowserService
NavigationCPNavigationSessionNavigationManager
PublishingApp Store ConnectGoogle Play Console
Commission15–30%15–30%
ModerationApp Review (1–3 days)CTS + Google Play (1–4 weeks)

Wireless connection support: CarPlay Wireless is available since iOS 9 and requires Wi-Fi + Bluetooth. Android Auto Wireless is available since Android 11. For wireless connection, the car must support the corresponding standard. The developer does not need to write additional code — the OS handles the connection automatically.

Frequently Asked Questions

How is a Car App different from a mobile app?

A Car App is optimized for use while driving: minimal number of elements, large buttons, voice control, no text input. The app must comply with safety requirements — Distraction Design Guidelines from Apple and Google.

What app categories are available for CarPlay?

CarPlay supports categories: navigation (Apple Maps, Google Maps, Waze), audio (Spotify, Apple Music), messaging (reading and dictation via Siri), automotive functions (EV charging, parking), and VOIP calls.

How to develop an app for Android Auto?

Use the Android Car App Library: implement CarAppService as the entry point, Session for lifecycle management, Screen for each screen. The app must support MediaBrowserService for media or NavigationManager for navigation.

Is moderation required for a Car App?

Yes, both platforms require moderation. Apple reviews CarPlay apps through App Review. Android Auto requires passing the Android Auto Compatibility Test Suite (CTS) and verification in Google Play Console.

What languages are used for Car App?

For CarPlay — Swift with CarPlay frameworks (CPInterfaceController, CPTemplate, CPListItem) and SiriKit. For Android Auto — Kotlin with Car App Library and MediaBrowserService.

Summary

  • Car App — an application for CarPlay (iOS) and Android Auto (Android), optimized for safe use while driving
  • Apple CarPlay uses the CarPlay framework with CPInterfaceController, CPListTemplate, and SiriKit for voice control
  • Android Auto uses the Car App Library with CarAppService, Session, Screen, and MediaBrowserService for media
  • Voice control — Siri (CarPlay) and Google Assistant (Android Auto) are mandatory for navigation and messaging
  • UX limitations — large buttons 48x48 pt, minimum elements, no video, response under 100 ms
  • Moderation — App Store (1–3 days) and Google Play CTS (1–4 weeks) with security and UX review
  • Wireless connection — CarPlay Wireless (iOS 9+) and Android Auto Wireless (Android 11+) available without a cable

We will develop a mobile application turnkey

IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.

Discuss the project

Read also