Skip to content

A simple Android app to record and play back audio with focus management, device selection, and smooth user experience.

Notifications You must be signed in to change notification settings

lng8212/SimpleMediaRecord

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleMediaRecord

A simple Android app to record and play back audio with focus management, device selection, and smooth user experience.


✨ Features

🎙️ Audio Recording

  • Permission Required:

    • android.permission.RECORD_AUDIO
  • Recording Features:

    • Uses mono channel for efficient recording.

    • Supports popular audio formats.

    • Displays the current active microphone during recording:

      • For Android 12+: uses AudioManager.getActiveRecordingConfigurations().

      • For Android <12: checks the first element from the active recording list.

    • Pause and resume recording at any time.

    • Handles Audio Focus during recording:

      • Short interruptions (e.g., notification sounds, system sounds) → pause recording.

      • Long interruptions (e.g., music app starts, incoming phone call) → stop recording.

      • When focus is regained (e.g., call ends) → resume recording.

🔊 Audio Playback

  • Playback Features:

    • Requests audio focus when playing back:

      • Short interruptions → pause playback.

      • Long interruptions → stop playback.

      • Focus regained → resume playback.

    • Allows output device selection during playback (for Android 12+):

      • Uses setCommunicationDevice() to switch between speaker, wired headset, Bluetooth, etc.

      • Note: For Bluetooth A2DP devices, media route needs to be set separately.

    • On Android <12:

      • Output device change is only supported before playback starts (using AudioAttributes.Builder.setUsage()).

      • (Changing during playback is not implemented yet, but sample code has been tested.)


🛠️ Tech Stack

  • Kotlin

  • AudioRecord for recording audio

  • MediaPlayer for playback

  • AudioManager for managing active recordings and audio focus

  • MVVM architecture (ViewModel, Repository)

  • Hilt for Dependency Injection

  • Flow/StateFlow for reactive state handling


Screenshot


📜 Notes

  • Audio focus is carefully managed to ensure good user experience across interruptions.

  • Device switching is smooth on Android 12+, partially limited on Android <12.

  • The app aims to give maximum control over recording/playback while handling different Android versions gracefully.

About

A simple Android app to record and play back audio with focus management, device selection, and smooth user experience.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages