CarPanel is an Android app that is the end result of me thinking I wish my car had a clock in it.
The project started off, strangely enough, by me buying a car and finding that despite being made in 2013, there was no clock. So, I started exploring solutions! My first iteration was to sacrifice an old Android Wear watch I had, and I effectively taped it to my dashboard. I used an existing app to design the UI, and another app to map Spotify’s current playing song to it as well. I had made it so I could tap the watch face to skip a song, and after about three journeys I decided I wanted more.
At this point, I purchased a relatively cheap used Samsung A8 tablet, which would function as my display. I’ve worked with Android before – I made a digital fire register while working at Unipart, and a mug counting app while working at Pyramid – but this was my first time making something so UI-focused, and also the biggest Android project I had worked on. I knew that there was an API for Spotify, and I knew that you could get bluetooth on-board diagnostics devices for your car, so I started planning out what information I’d want readily available.
The main roadblocks I hit were simply because of my cheap car. My original plans made a lot of use of the odometer (mileage counter) for calculating real-time miles per gallon consumption, tracking how long my trips were and syncing it to a google sheet and various other things, mainly to help with my budgeting. However, the odometer wasn’t available via OBD in my car, and the remaining fuel seemed to decrease in larger jumps instead of smoothly, so I had to scrap those plans.
Eventually I decided on my final layout; Spotify information and dials showing my fuel, engine temperature, speedometer and tachometer. The engine temp and tachometer aren’t on my car by default anyway so those are certainly nice additions, while the speedometer gives a more accurate reading and the fuel is just a nicer display compared to the car’s bar chart. Finally, of course, there’s a clock! The point of the whole project!
I did add a few more features as well. Firstly, there is a loading/splash screen with my cars logo on that’s displayed while it connects to Spotify and the OBD bluetooth device; it’s just a bit nicer than a plain white display (the background is a blurred version of the current Spotify artwork), and tells me that it’s loading (or not, when I don’t have enough signal to authenticate through Spotify… their API doesn’t work in offline mode currently.). I then also added a closing screen. I was encountering some issues where occasionally I’d sleep my device after a drive, and when I came back I’d have to force-quit Spotify before it would allow a new connection. Apparently this was due to not forcing a disconnection earlier, but when the entire app is based around the connection its hard to do that beyond closing the entire app! So, when the car’s bluetooth connection is lost (because you’ve turned off the car and cut power to the device), the app now transitions to a closing screen. As a bonus, this closing screen also offers a button to send a text message to my phone with my current GPS location, the time, and how much fuel I have – so when I’ve lost track of time sitting in a coffee shop I know how long is left on my ticket and where my car is, and whether I need to get petrol or if I can sit for another few minutes.
The one and only real failure of the app was mapping. I really wanted to be able to have maps open side-by-side, taking up a third of the screen, but Android simply doesn’t allow it. The closest you can get is through manually setting two apps to split screen, which was my final approach but isn’t self-contained within one app. I could have used the Maps API to reimplement an entire turn-by-turn navigation system, but I figured that was just overkill by this point.
So, there we have it! Now my car has a clock. And a few other things…