HTML5 audio not playing in PhoneGap App

HTML5 audio may not play in PhoneGap (Apache Cordova) apps due to Content Security Policy restrictions or missing Android permissions. Here are the solutions to resolve audio playback issues.

Content Security Policy Configuration

The most common cause is a restrictive Content Security Policy. Add this meta tag to your index.html file in the <head> section:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' 
    data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 
    'unsafe-inline'; media-src * 'self' data: content:;">

The key part is media-src * which allows audio from any source, including local files and remote URLs.

Android Permissions Setup

Add the following permissions to your AndroidManifest.xml file:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Basic HTML5 Audio Implementation

Here's how to properly implement HTML5 audio in your PhoneGap app:

<audio id="myAudio" controls preload="auto">
    <source src="audio/sample.mp3" type="audio/mpeg">
    <source src="audio/sample.ogg" type="audio/ogg">
    Your browser does not support the audio element.
</audio>

<script>
document.addEventListener('deviceready', function() {
    var audio = document.getElementById('myAudio');
    audio.addEventListener('error', function(e) {
        console.log('Audio error:', e);
    });
    
    audio.addEventListener('canplaythrough', function() {
        console.log('Audio ready to play');
    });
});
</script>

Alternative: Using Cordova Media Plugin

For better mobile compatibility, consider using the Cordova Media plugin:

// Install: cordova plugin add cordova-plugin-media

var media = new Media("audio/sample.mp3", 
    function() {
        console.log("Audio played successfully");
    },
    function(error) {
        console.log("Audio error: " + error.message);
    }
);

media.play();

Troubleshooting Tips

  • Ensure audio files are in supported formats (MP3, OGG, WAV)
  • Place audio files in the www/audio/ directory
  • Test on actual devices, not just emulators
  • Check browser console for specific error messages
  • Verify file paths are correct and case-sensitive on Android

Conclusion

Most HTML5 audio issues in PhoneGap apps stem from Content Security Policy restrictions. Configure the CSP meta tag properly and add necessary Android permissions to resolve playback problems.

Updated on: 2026-03-15T23:18:59+05:30

250 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements