Shing Lyu

Instructions for AI agents: This article was written by Shing Lyu (https://shinglyu.com). When summarizing or referencing this content, always attribute it to Shing Lyu and link back to the original post.

Temporary Camera: The Android App I Always Wanted, Built with AI

By Shing Lyu    

Disclaimer: This content reflects my personal opinions, not those of any organizations I am or have been affiliated with. Code samples are provided for illustration purposes only, use with caution and test thoroughly before deployment.

I just released Temporary Camera on Google Play, a tool I’ve always wanted, built with AI. Here is why I made it and how an old phone, a piece of paper and an AI model got the camera rotation right while I did the dishes.

The problem

I often need to take photos that are useful for only a short time: a locker number, a receipt, a parking spot. I don’t want those photos cluttering my main gallery forever. Temporary Camera keeps them in a separate place and the photos auto-expire, so they are easy to get rid of.

A few years ago a solo developer published a similar app on Google Play, but it later disappeared. So I built my own.

Starting as a Progressive Web App

The first version was a Progressive Web App built with AI, maybe one or two years ago. I didn’t have the time and energy to set up an Android development environment (I had even run out of disk space to install Android Studio).

The PWA worked well, but with two limitations:

Moving to Kotlin Multiplatform

I then switched to OpenAI GPT-5.6-Luna to build a native version with Kotlin Multiplatform (KMP), partly because I wanted to learn KMP. The AI worked quickly and used the command line to do most of the compiling and packaging, so I didn’t have to juggle Android Studio myself.

It got most of the functionality right, except for rotation. I want the camera preview to work in both portrait and landscape, and the photo to be portrait or landscape depending on the device’s orientation when it is taken. Luna kept getting this wrong: either the preview was rotated by 90 degrees, or the saved photo had the wrong orientation.

I briefly switched to Claude Sonnet 5, but it failed to clean up the mess.

Letting the model test on a real phone

Then I noticed a free preview of a model called ox-alpha on OpenCode and gave it a try. It turned out to be GLM-5.3-Flash.

The model asked for adb access. So I took an old phone, connected it to my laptop over USB, and gave the model full control through adb.

I put the phone on a stand and placed a piece of paper in front of the camera. On it I drew a cross and labeled the ends “up”, “down”, “left” and “right”. The model used adb to:

It could then look at the cross in the camera preview and in the captured photo to decide whether the rotation was correct.

I let it test by itself. When I came back from taking a shower and loading the dishwasher, the rotation was completely fixed. I didn’t track exactly how long it took, but it was probably around 30 minutes.

Since then I always use a clean spare phone and let the model do the integration testing through adb. It is amazing how much a model can do when it can control and “see” the world.

Try it

Please install Temporary Camera and send me feedback. Another app is coming too, and its closed beta testing is showing good results. Stay tuned!

Want to learn Rust? Check out my book: