Lab project · Android Auto
CarStocks
Your stock watchlist on the car’s Android Auto screen. Each ticker shows its price and its day, week and month change, and tapping one reads the quote aloud through the car speakers.
Free, version 1.0.1. Android 9 or newer, with any car or head unit that runs Android Auto. Not on the Play Store, so you install it yourself.
CarStocks on a real dashboard, projected from the phone over Android Auto.
A personal project that bends the Android Auto rules
Android Auto only lets a handful of app categories onto the car screen, and stock tickers are not one of them. CarStocks gets there by registering as a media app, the same category as a music player. Your tickers appear where songs would, and “playing” one reads the quote aloud instead of playing music.
It also shows more text on the screen than Google’s driver-distraction review allows for published apps. That is why it is not on the Play Store and won’t be. It is free, unofficial, comes with no warranty and no promise of support. If you install it, you do so at your own risk, and keeping your eyes on the road is on you. The voice readout exists so you don’t have to read anything while you drive.
🚗 In the car
One row per ticker, refreshed every 30 or 60 seconds while Android Auto is running.
What each row shows
- Title: the symbol and current price, such as
VTI: $336.92 - Subtitle: day, week and month change, each with a green (up), red (down) or white (flat) dot so you can read direction without reading numbers
Tap a row to hear it
CarStocks briefly lowers your music, like a navigation prompt, and says something like:
“Okay. Apple is trading at 214.30 dollars. Day change: up 1.20 percent. Week change: down 0.40 percent. Month change: up 3.10 percent.”
Then your audio comes back. Well-known tickers such as AAPL, MSFT or TSLA are spoken by company name. Anything else is spoken as its symbol.
📱 On the phone
The watchlist is edited on the phone, never in the car.
Stock List Manager
- Add a ticker with the round + button. Any symbol
Yahoo Finance knows works: stocks, ETFs, index and mutual funds (for example
AAPL,VTI,GLD,VTPSX). - Remove one with its red ✕.
- Reorder by dragging the handle on the left. The car shows the same order.
- Up to 10 tickers. The + button greys out when the list is full, as in the screenshot.
- Refresh rate: the switch toggles between 60 seconds (default) and 30 seconds.
It starts with ten example tickers (VXUS, GDX, VTI, GLD, VTPSX, OGMIX, AAPL, GOOGL, MSFT, TSLA). Replace them with your own. The list is stored only on your phone.
✨ What it does
🔊 Voice readout
Android’s built-in text-to-speech reads the price and all three changes. It uses transient audio focus, so music ducks and resumes on its own.
📈 Day, week, month
Each change is calculated from a month of daily closes against the current price, so you see short- and medium-term direction at once.
🟢 Colour dots
Green, red and white dots beside every change show direction at a glance.
✏️ Your own watchlist
Up to ten symbols, in your order, edited on the phone. No sign-up and no cloud: the list lives on your phone.
⏱️ 30 or 60 seconds
Pick a faster refresh during market hours or a slower one to save data on a long drive.
🔒 Nothing to sign into
No ads, no analytics, no account. The only network traffic is quote requests to Yahoo Finance.
📦 Download and install
About ten minutes the first time: install the app on your phone, then tell Android Auto to show apps that don’t come from the Play Store.
CarStocks 1.0.1 for Android
File: CarStocks-1.0.1.apk · 3.2 MB · Android 9 (API 28) or newer
SHA-256: d40f13ae5133b4ff59dce86b259b5c2beb457a2bd2c29bf3c857635a05437236
Signing certificate SHA-256: 639cf9e93f73643db5da4e7c8c9f3612324e5e0af7387705ffe7dfa06ed8be2d
📱 Phone
- Android 9 or newer
- Android Auto set up and working with your car. It is built into Android 10 and later. On Android 9, install the Android Auto app from the Play Store.
- Mobile data while driving
🚗 Car
- Any car or aftermarket head unit with Android Auto
- A USB data cable, or a car that supports wireless Android Auto
- Nothing is installed in the car itself
⚠️ Not supported
- iPhone / Apple CarPlay
- Cars with Google built-in (Android Automotive), where apps run on the car, not the phone
- Unknown sources being blocked by a work profile or device admin
Download the APK on your phone
Open this page on the phone and tap Download. Chrome may warn that “this type of file can harm your device”. That warning appears for every APK downloaded outside the Play Store. Tap Download anyway.
Downloaded it on a computer instead? Copy CarStocks-1.0.1.apk to the phone’s
Download folder over USB, or skip ahead and use the adb
method below.
Allow the install and install it
- Open the downloaded file from Chrome’s download notification, or from Files → Downloads (My Files → Downloads on Samsung).
- The first time, Android says the app you opened it from is not allowed to install unknown apps. Tap Settings, turn on Allow from this source, then go back.
- Tap Install.
Google Play Protect may say it doesn’t recognise the developer, or offer to scan the app. That is expected for an app outside the Play Store. Tap More details → Install anyway, or let it scan and then install. Afterwards you can switch Allow from this source back off for Chrome or Files. It is only needed while installing.
You can also turn the permission on ahead of time: Settings → Apps → Special app access → Install unknown apps (on Samsung: Settings → Apps → ⋮ → Special access → Install unknown apps).
Open CarStocks once on the phone
Open CarStocks from the app drawer. After a few seconds you should see the Stock List Manager with live prices. This confirms the phone can reach Yahoo Finance. Set up your watchlist and refresh rate now. You can’t edit them from the car.
Turn on Android Auto’s developer mode
Android Auto hides apps that weren’t installed from the Play Store until you enable its developer settings. These are separate from the phone’s own developer options.
- Open Android Auto’s settings on the phone:
- Pixel and most phones: Settings → Connected devices → Connection preferences → Android Auto
- Samsung: Settings → Connected devices → Android Auto
- Android 9: open the Android Auto app, then ☰ → Settings
- Scroll to the bottom and tap the Version entry about 10 times.
- Confirm Allow development settings? with OK.
Enable “Unknown sources”
- Still in Android Auto settings, tap the ⋮ menu in the top right corner and choose Developer settings.
- Scroll down and tick Unknown sources.
You only need to do this once per phone. It lasts until Android Auto’s data is cleared or the phone is reset.
Connect to the car and open CarStocks
- Connect the phone to the car’s USB data port, or connect wirelessly. Wait for Android Auto to start on the car screen.
- Open the Android Auto app launcher (the grid icon) and choose CarStocks. Its icon is a gauge with a car.
- The watchlist loads as a list, as in the photos above.
Not in the launcher? On the phone, open Android Auto settings → Customize launcher and make sure CarStocks is ticked. If it still doesn’t appear, unplug the phone, check step 5, and reconnect.
Tap a ticker and listen
Tap any row to hear its quote. Volume follows the car’s media volume, so set it with the normal volume knob while audio is playing. The list refreshes on its own while CarStocks is open.
🌍 Install blocked by developer verification?
Since 30 September 2026, certified Android phones in Brazil, Indonesia, Singapore and
Thailand check that every app, wherever it was downloaded, comes from a developer
registered with Google. Google plans to extend this to other countries from 2027.
CarStocks is published by DitDots, a registered Android developer. If your phone still
refuses to install it, install it from a computer with adb as shown below.
Alternative: install from a computer with adb
If you have the Android SDK platform tools, turn on USB debugging in the phone’s Settings → System → Developer options (tap Build number seven times to reveal them), connect the phone and run:
adb install CarStocks-1.0.1.apk
Then continue from step 3.
Updating and uninstalling
- Update: download the new APK from this page and install it over the old one. Your watchlist and refresh setting are kept. Every release is signed with the same key, shown above.
- “App not installed as package conflicts with an existing package”: you have a CarStocks you built yourself, signed with a different key. Uninstall that one first. Its watchlist is lost, so note your tickers.
- Uninstall: long-press CarStocks in the app drawer and choose Uninstall. You can turn Android Auto’s Unknown sources back off afterwards.
Troubleshooting
| Symptom | What to check |
|---|---|
| “Install blocked” or nothing happens on install | Step 2: allow the app you opened the APK from (Chrome or Files) to install unknown apps. A work profile or device-management policy may block installs entirely. |
| CarStocks isn’t on the car screen | Steps 4 and 5 (developer mode, then Unknown sources), then Customize launcher. Reconnect the phone after changing either. |
| The list is empty or says it is loading | The phone has no data connection, or Yahoo Finance is not responding. Open CarStocks on the phone. If prices don’t load there either, it is the network. |
| A symbol never shows up | Yahoo Finance doesn’t recognise it. Check the exact symbol on finance.yahoo.com. Symbols that fail are skipped so the rest of the list still works. |
| Tapping a ticker is silent | Turn up the car’s media volume. Check the phone has a text-to-speech engine: Settings → System → Languages → Text-to-speech output (on Samsung: General management → Text-to-speech). Speech Services by Google is the usual one. |
No car handy? Try it with the Desktop Head Unit
Android’s Desktop Head Unit (DHU) simulates a car screen on a computer. Install Android Auto Desktop Head Unit Emulator from Android Studio’s SDK Manager (SDK Tools tab). Install CarStocks on the phone and complete steps 4 and 5. Then choose Start head unit server from the ⋮ menu in Android Auto’s settings, connect the phone over USB, and run:
adb forward tcp:5277 tcp:5277
cd <Android SDK>/extras/google/auto
./desktop-head-unit # macOS / Linux
desktop-head-unit.exe # Windows
🔧 How it’s built
A Kotlin, multi-module Gradle project. It uses no Car App Library templates. The car screen is a media browser.
The media-app trick
CarStocks declares itself an Android Auto media app (<uses name="media"/>)
and implements a MediaBrowserServiceCompat. Android Auto draws whatever that service
returns as a browsable list, so each ticker is a “playable” media item:
- The browse tree has a single root that returns one item per ticker in the watchlist.
- The item title is
SYMBOL: $price. The subtitle holds the day, week and month changes with their colour dots. - A background loop re-fetches prices and calls
notifyChildrenChanged(), so the list updates in place. - Tapping an item fires
onPlayFromMediaId(). The service requests transient, duckable audio focus, sets the “now playing” metadata, and speaks the quote withTextToSpeech. It releases focus when the sentence ends.
Market data
- Source: the Yahoo Finance chart endpoint (
query1.finance.yahoo.com), one month of daily closes per symbol - Retrofit 2.9 with Gson over OkHttp 4.12. Every ticker is fetched in parallel with Kotlin coroutines, under a 30-second overall timeout.
- Day, week and month changes are computed from the close-price history against the current price.
- A symbol that fails is logged and skipped instead of breaking the list.
automotive
The app you install, despite the name. It holds MediaService, the car
list and voice readout, plus the phone’s Stock List Manager. It runs on the phone and
projects through Android Auto.
shared
StockManager (the watchlist, stored as JSON in
SharedPreferences, ten tickers maximum) and RefreshRateManager
(30 or 60 seconds).
mobile
An earlier phone-only testbed with a fixed ticker list. It isn’t registered with Android Auto and isn’t part of the download.
| Package | com.ditdots.carstocks, version 1.0.1 (2) |
| Android | Min SDK 28 (Android 9), target SDK 36 |
| Language and build | Kotlin (JVM 11), Gradle Kotlin DSL, R8-shrunk release build |
| Libraries | AndroidX Media, Retrofit 2.9 + Gson, OkHttp 4.12, Kotlinx Coroutines 1.7.3, Material Components |
| Permissions | Internet only |
❓ Questions
Do I need a special car?
No. CarStocks runs on your phone and projects through Android Auto, so any car or aftermarket head unit with Android Auto works. Cars with Google built-in, which run Android Automotive OS, are a different platform and are not supported.
Is it safe to use while driving?
Judge that for yourself. CarStocks relies on voice so you don’t have to read numbers, but it puts more text on the screen than Google allows for published driving apps, which is why it isn’t on the Play Store. Set up the list before you leave, and tap and listen rather than read while moving.
Are the prices real-time?
They are whatever Yahoo Finance’s chart endpoint reports, refreshed every 30 or 60 seconds. Some exchanges and funds are delayed, and mutual funds only update once a day after the close. Don’t trade on it.
Does it cost anything or collect data?
It’s free, with no ads, no account and no analytics. Your watchlist stays on your phone. The only network requests are to Yahoo Finance for the symbols on your list.
Why not use the Car App Library like other driving apps?
Its templates are only available to approved categories such as navigation, parking and charging. Finance apps are not among them. The media category is the one way to get a list onto the car screen without a review.
Is the source code available?
Not at the moment. The repository is private. The APK above is the release build, and its SHA-256 and signing certificate are listed so you can check what you install.
CarStocks is an independent hobby project. It is not affiliated with Yahoo, Google or Android Auto, and nothing it shows or says is financial advice. Android and Android Auto are trademarks of Google LLC. Questions? Use the contact page.