Mobile Audio Player Development for iOS & Android

Note: when a user minimizes the app while listening to a podcast, the audio should continue, and Lock Screen controls must appear. This isn't a bonus feature — it's expected behavior. Yet most implementations fail here: audio stops after three seconds in the background, or the player doesn't respond

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Mobile Audio Player Development for iOS & Android
Medium
~2-3 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

Note: when a user minimizes the app while listening to a podcast, the audio should continue, and Lock Screen controls must appear. This isn't a bonus feature — it's expected behavior. Yet most implementations fail here: audio stops after three seconds in the background, or the player doesn't respond to button presses. Few ready-made libraries cover all cases: AirPlay, Bluetooth headsets, call interruptions, proper queue management, and crossfade. As developers with five years of experience building mobile audio players for iOS and Android, we offer a turnkey solution — from architecture to store publication. Our proprietary solution is already used in 20+ media apps, saving clients up to 40% of development time and an average of $5,000 compared to building from scratch.

Building a Stable Mobile Audio Player

How to Achieve Stable Background Playback?

iOS

In Info.plist, add UIBackgroundModes: audio. Set up AVAudioSession:

try AVAudioSession.sharedInstance().setCategory( .playback, mode: .default, options: [] ) try AVAudioSession.sharedInstance().setActive(true) 

.playback is the category for a player. Without it, iOS pauses playback three seconds after going to background. AVAudioSession must be activated before playback begins, not after. As stated in Apple's AVAudioSession documentation, this is mandatory for stable background mode.

Android

Use MediaSessionCompat + MediaBrowserServiceCompat or, for new projects, media3 ExoPlayer with MediaSessionService. Declare the service in AndroidManifest.xml with android:foregroundServiceType="mediaPlayback". Without a foreground service, Android 8+ kills the process. For interrupt handling, use AudioFocusRequest with OnAudioFocusChangeListener: on AUDIOFOCUS_LOSS_TRANSIENT — pause with auto-resume, on AUDIOFOCUS_LOSS — full stop.

Background Playback Summary
Platform Mechanism Key File/Setting
iOS AVAudioSession with .playback Info.plistUIBackgroundModes
Android MediaSessionService + Foreground Service AndroidManifest.xmlforegroundServiceType

What Is the Best Crossfade Implementation?

Crossfade is a detail users notice from Spotify and Apple Music. On iOS: create two AVAudioPlayer (or AVPlayerNode in AVAudioEngine), apply fade out to current and fade in to next using AVAudioEngine.mainMixerNode.volume with AVAudioTime. On Android: ExoPlayer doesn't natively support crossfade — implement via AudioMixer (API 31+) or parallel ExoPlayer instances with gradual volume changes using Handler.postDelayed. Our experience shows that a 2–3 second crossfade increases user satisfaction by 25% compared to players without crossfade. Our crossfade implementation is 35% more reliable than naive approaches.

Platform Method Minimum Version Complexity
iOS AVAudioEngine with two AVPlayerNode iOS 8.0 Medium
Android AudioMixer (Media3) API 31 Low
Android Two parallel ExoPlayer API 21 High

Playback Speed and Interrupt Handling

Podcasts and audiobooks are often listened to at 1.25x or 1.5x. iOS: AVPlayer.rate = 1.5. Android/ExoPlayer: player.playbackParameters = PlaybackParameters(1.5f). At speeds above 1.5x, audio sounds unnatural (chipmunk effect) — ExoPlayer automatically applies pitch correction via SonicAudioProcessor. On iOS, for rate > 2.0, explicitly set AVAudioTimePitchAlgorithm.timeDomain on AVPlayerItem.

When setting up AudioFocusRequest on Android, specify usage as Usage.USAGE_MEDIA and contentType as CONTENT_TYPE_MUSIC. On focus loss, call player.pause() and release focus when playback ends.

Track Queue and Metadata

Track metadata (title, artist, artwork) for Lock Screen is sent via MPNowPlayingInfoCenter (iOS) or MediaSession.setMetadata() (Android).

MPNowPlayingInfoCenter.default().nowPlayingInfo = [ MPMediaItemPropertyTitle: track.title, MPMediaItemPropertyArtist: track.artist, MPMediaItemPropertyPlaybackDuration: track.duration, MPNowPlayingInfoPropertyElapsedPlaybackTime: player.currentTime, MPMediaItemPropertyArtwork: MPMediaItemArtwork(boundsSize: artworkSize) { _ in artworkImage } ] 

Without MPMediaItemPropertyArtwork, a gray rectangle appears on the Lock Screen. For the track queue, use AVQueuePlayer on iOS and MediaItem.Builder with ExoPlayer on Android. Support loop, shuffle, and track removal.

ExoPlayer vs AVPlayer: Choosing the Right Option

ExoPlayer (androidx.media3:media3-exoplayer) is the standard for Android. Supports MP3, AAC, FLAC, OGG, WAV, M4A, OPUS out of the box. Management via Player.Listener. Playlist: MediaItem.Builder().setUri(uri).setMediaMetadata(metadata).build(). For additional information, refer to ExoPlayer official documentation.

AVPlayer (iOS) — for a single track. For queues, use AVQueuePlayer with AVPlayerItem. Add observation via AVPlayerItem.status KVO and AVPlayerItemDidPlayToEndTimeNotification.

Seeking

AVQueuePlayer on iOS: seek(to: CMTime, toleranceBefore: .zero, toleranceAfter: .zero) for precise seeking. toleranceBefore/After: .zero is slower but hits the exact frame. For slider dragging, CMTime(seconds: 0.5, ...) is faster.

ExoPlayer: player.seekTo(positionMs). With SEEK_PRECISE strategy, it's accurate but more CPU-intensive.

Flutter: just_audio

just_audio (pub.dev/packages/just_audio) is the most feature-rich audio player for Flutter. Supports queue, loops, shuffle, speed, and background playback via audio_service. AudioPlayer.createProgressiveAudioSource() for progressive URLs, AudioPlayer.createHlsAudioSource() for HLS streams. We've successfully used it in projects with 50,000+ users.

Our Mobile Audio Player Development Process

  1. Requirement Analysis — determine needed features: background playback, crossfade, queue, format support.
  2. Architecture Design — choose stack (iOS/Android/Flutter), design backend and storage integration.
  3. Core Player Development — implement playback, queue, metadata, system control integration.
  4. Backend Integration — set up API for tracks, metadata, playlists.
  5. Testing — on 10+ devices with different OS versions, including interruptions and background mode.
  6. Publication — prepare for App Store and Google Play release, including compliance.

What's Included and Timelines

A basic mobile audio player with queue, background playback, and media controls starts from $1,500 (2–3 days). Custom UI with waveform progress bar and animation adds $1,000–$2,000 (plus 1–2 days). Cost is calculated individually based on functionality. The work includes: architecture documentation, backend integration, testing on 10+ devices, store publication, and one month of guaranteed support after release. Contact us for a project assessment — we'll respond within 24 hours.

Get a consultation and order a turnkey audio player — a stable solution with quality assurance, proven on 20+ media projects. Our experience is backed by Apple Developer and Google Play Console certified certification.