SkillAgentSearch skills...

android-for-cars-parked-apps

Adapt existing Android video streaming apps, games, and web browsers

Install / Use

npx skills add android/skills --skill android-for-cars-parked-apps

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

92/100

Category

Other

Supported Platforms

Universal

Our assessment of android-for-cars-parked-apps

android-for-cars-parked-apps scores 92/100 on our quality scale, 36th of 260 Other skills we index (top 14%).

Its SKILL.md is 17 KB long, well organised into 20 sections with 3 code examples: a thorough specification that gives an agent plenty to work with.

With 7,514 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
18/20
Description
12/15
Adoption
16/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 27 days ago, so android-for-cars-parked-apps is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

android-for-cars-parked-apps compared with similar skills

All 4 of these similar skills score higher than android-for-cars-parked-apps; compare them before choosing.

SkillScoreStarsUpdatedFormat
android-for-cars-parked-apps (this skill)by android927.5k27d agoSKILL.md
algorithmic-artby anthropics100177.9k28d agoSKILL.md
pptxby anthropics100177.9k28d agoSKILL.md
designby nextlevelbuilder100137.2k6d agoSKILL.md
ui-ux-pro-maxby nextlevelbuilder100137.2k6d agoSKILL.md

Frequently asked questions

How do I install android-for-cars-parked-apps?
Run npx skills add android/skills --skill android-for-cars-parked-apps. The install tabs above show the steps for each supported agent.
Which AI agents does android-for-cars-parked-apps work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is android-for-cars-parked-apps safe to use?
It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is android-for-cars-parked-apps still maintained?
The repository was last updated 27 days ago, so android-for-cars-parked-apps is actively maintained.

name: android-for-cars-parked-apps description: Adapt existing Android video streaming apps, games, and web browsers to run as parked apps on Android Auto and Android Automotive OS. Covers manifest configuration, Google Play hardware feature declarations, compatibility mode, back navigation affordances, orientation and display continuity, controllable system bar insets, irregular display cutouts, driver distraction lifecycle handling, MediaSession playback restrictions with CarUxRestrictionsManager, background audio while driving, and browser sensitive data protection. Use this skill when migrating, building, or auditing parked apps for cars to meet Car App Quality guidelines. Don't use for media audio apps, templated Car App Library navigation, point of interest, internet of things, weather, or communication apps designed for use while driving. license: Complete terms in LICENSE.txt metadata: author: Google LLC last-updated: '2026-10-09' keywords:

  • Android Auto
  • Android Automotive OS
  • parked apps
  • video
  • games
  • browsers
  • adaptive

Adapt existing Android video apps, games, and web browsers to run as parked apps on Android Auto and Android Automotive OS. Follow these steps to meet the car app quality guidelines for Google Play distribution.

Prerequisites

  • Begin with an existing adaptive Android app in one of the supported parked app categories: video streaming apps, games, or web browsers.

Glossary

  • Parked apps: Parked apps run on Android Auto and Android Automotive OS only while the vehicle is parked. The three parked categories are video, games, and browsers; other categories can't be published as parked apps.
  • Android Auto: Android Auto is a phone-powered projection system. Apps execute on the user's phone and are projected to the in-car display over a wired or wireless connection. Android Auto is a separate platform from Android Automotive OS.
  • Android Automotive OS: Android Automotive OS, or AAOS, is a variant of Android that runs directly on the vehicle itself. Android Automotive OS is a separate platform from Android Auto.
  • Video category: Video apps display streaming videos while parked. Generally available on Android Automotive OS; unsupported on Android Auto.
  • Games category: Game apps provide gameplay while parked. Generally available on Android Automotive OS and Android Auto.
  • Browsers category: Web browsers let users browse the web while parked. Available in beta on Android Automotive OS; unsupported on Android Auto.
  • Media category: Not a parked category. Media apps play audio content (music, radio, audiobooks, excluding video) while driving or parked.
  • Android for Cars platform: Android for Cars is an umbrella term that consists of Android Auto and Android Automotive OS.
  • Generally available categories: Permitted on internal testing, closed testing, open testing, and production Google Play tracks for a supported platform.
  • Beta categories: Permitted on internal or closed testing tracks; open testing and production tracks require acceptance into an early access program.
  • Audio while driving: A beta feature on Android Automotive OS that lets video apps play audio while the vehicle is in motion.
  • Car app quality guidelines : When auditing an app against the Tier 3 (Car ready ), Tier 2 (Car optimized ), or Tier 1 (Car differentiated ) criteria, MUST check car app quality guidelines.
  • Android Automotive OS compatibility mode : Compatibility mode (android.software.car.display_compatibility) is a system feature on select vehicles providing a system back affordance, safe area rendering, density scaling, and opaque driving-mode blocking (moving activities to Stopped). Compatibility mode is only relevant to apps that support Android Automotive OS; it isn't relevant for apps that only support Android Auto.

Codebase exploration

Search the codebase for AndroidManifest.xml (or create Assets/Plugins/Android/AndroidManifest.xml in Unity projects), res/xml/automotive_app_desc.xml, build.gradle, build.gradle.kts, or gradle/libs.versions.toml files. Locate existing video players, MediaSession classes, requestedOrientation calls, and WindowInsets handlers. Unless instructed otherwise by the user, ask permission before adding dependencies.

Step 1: Configure the app manifest

Declare the app category, target platforms, hardware feature requirements, and activity configuration in AndroidManifest.xml.

1.1: Identify the app category

  • Video apps : Video apps MUST set android:appCategory="video" on <application> and MUST NOT include app/src/main/res/xml/automotive_app_desc.xml with uses name="video".
  • Games : Games MUST set android:appCategory="game" on <application>. Declare android.hardware.gamepad with android:required="false" if controller input is supported by the app.
  • Browsers : Browsers MUST include <category android:name="android.intent.category.APP_BROWSER"/> in the MAIN <intent-filter> of an exported <activity> (android:exported="true").

1.2: Identify target platforms and hardware features

  • Android Auto : Apps targeting Android Auto (Android 15+) MUST add <category android:name="android.intent.category.CAR_LAUNCHER"/> to an <intent-filter> in the AndroidManifest.xml file. Add it to the MAIN <intent-filter> unless the user specifies a different intent filter. NEVER add this category if the app is solely targeting Android Automotive OS.
  • Android Automotive OS : Apps targeting Android Automotive OS MUST declare <uses-feature android:name="android.hardware.type.automotive" android:required="false"/> ("false" for mobile or multi-form-factor tracks; "true" only if the app will be published on the dedicated Automotive OS track) in the AndroidManifest.xml file. NEVER add this feature tag if the app is solely targeting Android Auto.
  • Unrequired hardware features (DO-1) : To satisfy Google Play feature requirements and DO-1, declare unsupported features (android.hardware.wifi, android.hardware.screen.portrait, android.hardware.screen.landscape, android.hardware.camera) with android:required="false", and remove android:required="true" on features absent in cars.
  • Display continuity (LS-C1) : Configure android:configChanges for screenSize, smallestScreenSize, orientation, screenLayout, and density on <activity> so moving to or from a distant display does not recreate the activity or stutter playback.
  • Compatibility mode and distraction : Declaring compatibility mode is optional and is only relevant for apps that support Android Automotive OS. NEVER add compatibility mode for apps that only support Android Auto. Adding android.hardware.type.automotive disables compatibility mode unless <meta-data android:name="android.software.car.display_compatibility" android:value="true"/> is added to <application>. When an app declares android.software.car.display_compatibility in AndroidManifest.xml, the app MUST check PackageManager.hasSystemFeature("android.software.car.display_compatibility") at runtime and hide duplicate in-app back or close affordances when it returns true. Parked apps MUST NOT include <meta-data android:name="distractionOptimized" android:value="true"/> on any <activity> (DD-2, DD-3).

Step 2: Provide back navigation and orientation support

2.1: Add in-app back and close affordances

Android Automotive OS vehicles aren't required to have a hardware or software back button or gesture navigation (AN-1). Provide explicit UI back and close controls on every non-root screen, including detail screens and full-screen players:

  • If AndroidManifest.xml does not declare android.software.car.display_compatibility: Display explicit in-app back and close controls unconditionally.
  • If AndroidManifest.xml declares android.software.car.display_compatibility with android:value="true" : Show in-app back and close controls only when PackageManager.hasSystemFeature("android.software.car.display_compatibility") returns false.

2.2: Guard runtime orientation requests

Vehicle displays have fixed orientations. Requesting landscape on a fixed-portrait car display causes letterboxing or flickering loops (DO-1). Remove hardcoded android:screenOrientation manifest attributes and check PackageManager.FEATURE_SCREEN_LANDSCAPE and PackageManager.FEATURE_SCREEN_PORTRAIT before setting requestedOrientation.

Step 3: Adapt to system bars and irregular display cutouts

3.1: Track controllable system bar insets

On Android Automotive OS, OEMs are permitted to lock system bars visible so climate and vehicle controls remain accessible (AR-1). Track controllable insets with OnControllableInsetsChangedListener, hide only controllable bars, and apply windowInsetsPadding for uncontrollable statusBars, navigationBars, and displayCutout insets.

3.2: Render into irregular display cutouts safely

To meet Tier 1 criterion AR-2 on curved or non-rectangular car displays, NEVER use LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT (0) or LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES (1). Configure LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS (3) or LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER (2) using the car resource qualifier in res/values-car-v30/integers.xml:

<integer name="windowLayoutInDisplayCutoutMode">3</integer>
<br />

Protect interactive UI, app bars, and scrollable lists with WindowInsets.safeDrawing.

Step 4: Meet driver distraction and media playback requirements

4.1: Pause playback on lifecycle transitions and block driving resumption

When a vehicle begins moving, the OS covers parked activities with a blocking overlay and triggers onPause (and onStop on compatibility mode vehicles). To satisfy DD-2, DD-3, and MC-1:

  1. Pause playback on ON_PAUSE or ON_STOP using LifecycleEventEffect from androidx.lifecycle:lifecycle-runtime-compose.
  2. Expose a MediaSession (androidx.media3:media3-session) with play, pause, or stop commands and item metadata (MC-1), and release it in onCleared.
  3. Add useLibrary("android.car") in build.gradle.kts, wrap ExoPlayer in ForwardingSimpleBasePlayer, listen to CarUxRestrictionsManager, pause playback when isRequiresDistractionOptimization becomes true, and remove COMMAND_PLAY_PAUSE in getState so external MediaSession controls can't resume playback while driving:
@UnstableApi
class CarAwarePlayer(context: Context) :
    ForwardingSimpleBasePlayer(ExoPlayer.Builder(context).build()) {
    private var shouldPreventPlay = false
    private var pausedByUxRestrictions = false
    private lateinit var carUxRestrictionsManager: CarUxRestrictionsManager

    init {
        if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
            val car = Car.createCar(context)
            carUxRestrictionsManager =
                car.getCarManager(Car.CAR_UX_RESTRICTION_SERVICE) as CarUxRestrictionsManager
            shouldPreventPlay =
                carUxRestrictionsManager.currentCarUxRestrictions.isRequiresDistractionOptimization
            invalidateState()

            carUxRestrictionsManager.registerListener { restrictions: CarUxRestrictions ->
                shouldPreventPlay = restrictions.isRequiresDistractionOptimization
                if (!shouldPreventPlay && pausedByUxRestrictions) {
                    handleSetPlayWhenReady(true)
                    invalidateState()
                } else if (shouldPreventPlay && isPlaying) {
                    pausedByUxRestrictions = true
                    handleSetPlayWhenReady(false)
                    invalidateState

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars7.5k
CategoryOther
Updated27d ago
Forks488

Languages

Python

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions
android-for-cars-parked-apps — Universal Skill: Install & Safety Check | SkillAgent