All projects
Live

Bubble Level: Angle & Compass

An Android app that turns a phone into a spirit level, protractor and compass, and measures angles on the camera image. Built with Kotlin and Jetpack Compose; on Google Play in 29 languages.

Year
2026
Status
Live
measuring tools
4
languages
29
reading step
0.1°
Technologies
  • Kotlin
  • Jetpack Compose
  • Material 3
  • CameraX
  • Android Sensor API
  • AdMob
  • Google Play Billing
  • Google UMP (GDPR consent)
  • Gradle (Kotlin DSL)

Bubble Level (Turkish store name: Su Terazisi, Açıölçer, Pusula) is an Android app that measures tilt, angle and heading with the phone’s motion sensors. A spirit level, a protractor, camera-based angle measurement and a compass come together in one app, published free on Google Play.

How it works

  • Sensors: tilt is read from the rotation vector sensor and the accelerometer, the compass from the magnetometer. Angles are shown live in 0.1° steps.
  • Camera overlay: the camera view runs on CameraX, with the angle drawn over the live image. The image can be zoomed and saved as a photo, and angles can also be measured on a photo from the gallery.
  • Adaptive UI: the Jetpack Compose interface reflows for phones, tablets and landscape, and measurement continues uninterrupted through screen rotation.
  • On-device processing: there is no sign-up, account or app server; the app works fully offline.

Highlights

  • Spirit level: horizontal, vertical and bull’s-eye vials on one screen. When perfectly level, the colour turns orange and a soft chime plays.
  • Protractor: measures any angle, or the angle between two edges.
  • Compass: a heading indicator with a full 360° scale.
  • Calibration: one-tap calibration for a camera bump or a phone case.
  • Target slope: a target angle per axis, with sound and vibration as you approach it. A Hold button freezes the reading.
  • Units and history: degrees, percent or mm/m; measurements can be saved and shared.
  • System integration: the screen stays on while measuring, and the app can be opened from a Quick Settings tile. On Android 13 and later, the app language can be set separately in system settings.

Privacy and monetisation

Sensor data and the camera image are processed only on the device and are never sent anywhere; a photo is saved to the gallery only when the shutter is pressed. Camera permission is optional and requested only the first time camera mode is opened. The app is free and shows a Google AdMob banner; for advertising, the AdMob SDK may process device data such as the advertising ID. Ads can be removed with a one-time in-app purchase. Details are in the app’s privacy policy.

Technology

Written in Kotlin with Jetpack Compose (Material 3), using CameraX for the camera and the Android sensor API for measurement. Ads run on AdMob, ad consent on Google UMP and the ad-free upgrade on Google Play Billing; the build uses Gradle (Kotlin DSL). It supports Android 7.0 and later and is available in 29 languages. Store texts and release notes for all 29 languages are managed by scripts and checked against Play’s character limits. First released on Google Play on 29 September 2026.

If you are planning an Android app that combines sensors, the camera and store integration, you can reach me through the contact form.