ANDROIDANDROID APP

BabyLand

"One tap to silence a restless baby. Works with the phone face-down."

AndroidKotlinJetpack ComposeMediaSessionAndroid 8.0+
BabyLand

Android · Kotlin · Jetpack Compose · MediaSession

0
Offline operation
0
Controls
0
Sound start
0
Minimum API

OVERVIEW

|

New parents playing lullabies or white noise for a sleeping baby face a frustrating problem: they have to wake the phone screen and navigate to the app to change the sound or pause it, often waking the baby in the process. They needed lock-screen controls that worked with one tap.

|

A minimal Android app with large, pastel-themed sound buttons. Every sound is bundled with the app (no internet required). The app runs as a foreground audio service with full MediaSession integration, so playback controls appear on the lock screen and in the notification shade, the parent can pause or change the sound without touching the screen.

|

A completely offline, always-ready sleep helper that parents can control from the lock screen without disturbing the baby.

KEY FEATURES

Bundled Audio Assets

All lullabies and white noise tracks are included in the app package. There are no network requests, the app works in airplane mode, in hospital waiting rooms, anywhere.

Lock-Screen Controls

MediaSession integration puts playback controls on the lock screen and in the notification shade. Parents pause, skip, or change sounds without unlocking the phone.

Background Foreground Service

Audio runs as an Android foreground service with a persistent notification, ensuring Android doesn't kill playback when the screen turns off or other apps come to the foreground.

Pastel Accessible UI

Large, soft-coloured buttons designed to be used in a darkened room, high enough contrast to see, soft enough not to hurt night-adapted eyes.

TECH STACK

Tap to see the reasoning

BUILD TIMELINE

Phase 01

Audio Service Architecture

Implemented the foreground service with MediaSessionCompat. Set up the audio focus request and abandonment handling for correct behaviour when the phone receives a call.

CHALLENGES & SOLUTIONS

Android's audio focus system requires apps to pause when a call arrives and resume when it ends. I implemented the AudioManager.OnAudioFocusChangeListener correctly, including handling the AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK case for notification sounds that should lower rather than stop the lullaby.

LET'S BUILD SOMETHING TOGETHER

I'm always open to discussing new projects, partnerships, or just a good idea.