14
votes

I've made an HTML5 iPod.

You can try it here.

http://inventikasolutions.com/demo/iPod

On a PC, while using Chrome. If I navigate to a song, it starts playing automatically. But while using Chrome on Android it doesn't play the song. I have to hit the play/pause button again to play the audio.

Here is the code which runs, when you select the song to play:

audioPlayer.src=songurl[number];
audioPlayer.oncanplaythrough = "isAppLoaded";
audioPlayer.autoplay = "autoplay";
audioPlayer.addEventListener('ended',nextSong,false);
document.getElementById("player").appendChild(audioPlayer);

and here is the play/pause code.

        if (audioPlayer.paused)
        {
        audioPlayer.play();
        $("#pauseindicator").hide();
        $("#playindicator").show();
        }
        else
        {
        audioPlayer.pause();
        $("#pauseindicator").show();
        $("#playindicator").hide();
        }

Could it have some thing to do with the 'autoplay' variable? The default browser in Android plays the song immediately.

Thanks.

5

5 Answers

34
votes

In case someone bumps into this - Android version of Chrome in fact blocks autoplay function, but you can change settings of the browser. To do this, you have to enter chrome://flags and set Disable gesture requirement for media playback to on. It's impossible to force this setting via web, but if you're writing a dedicated web app like I did, you can use it.

8
votes

Please refer this link ...

http://code.google.com/p/chromium/issues/detail?id=138132

Chrome does not allow applications to play HTML5 audio without an explicit action by the user, similar to how it is handled by iOS, but differently than the stock Android browser handles it.

Autoplay is not honored on android as it will cost data usage.

8
votes

Add create.js to your page:

<script src="https://code.createjs.com/createjs-2015.11.26.min.js"></script>

and then launch sound this way:

<script>
    createjs.Sound.registerSound("./click.mp3", "x");
    setTimeout(function () {
        createjs.Sound.play("x");
    }, 10000)
</script>

Works for me on lastest Android.

6
votes

It looks like there is new way to active Chrome to autoplay audio and video

Go to chrome://flags

Set Autoplay policy to No user gesture is required

Chrome flags

3
votes

Update your Chrome to 29, this version now support WebAudio API and fixed many issues.

see: Chrome for Android Update

I'm using the SoundJS Lib and work very well in all browsers (only don't work well in Default Android Browser and Chrome with the Android version is less than 4.1).

See these examples: www.createjs.com/#!/SoundJS/demos/testSuite

Support for Web Audio API on Chrome for Android: code.google.com/p/chromium/issues/detail?id=166003

SoundJS limitations: community.createjs.com/kb/faq/soundjs-faq