Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

User gesture required to start playback in Android HTML5 player

I am using the HTML5 video tag on android and sometimes the chrome browser says it requires an explicit user gesture/click to start playback:

Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture

I know this is a known issue in Android but what I don't understand is why sometimes it plays automatically and on other occasions it requires a user action!

I am using the video tag with autoplay option.

like image 472
Novice Avatar asked Dec 15 '15 17:12

Novice


2 Answers

Auto-play is disabled since Android SDK 17 to avoid poor user experiences with video playback (i.e. undesired playback, undesired data usage). Normally video should only play following a user action. This is recommended behavior for both Android and iOS nowadays.

You can, however, set setMediaPlaybackRequiresUserGesture to false to enable auto-play if you really need to. Remember to check the SDK version, because this option does not exist before Android SDK 17.

int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > 16) {
        engine.getSettings().setMediaPlaybackRequiresUserGesture(false);
}

There is a LONG discussion and debate about Google's decision regarding autoplay here: http://chromium-bugs.chromium.narkive.com/cW5IXVgj/issue-178297-in-chromium-android-chrome-does-not-allow-applications-to-play-html5-audio-without-an

like image 58
joshgoldeneagle Avatar answered Oct 09 '22 15:10

joshgoldeneagle


As of January 24th, 2017

HTML5 video tags can autoplay on android if the video is muted. You would need to include the muted and autoplay attributes in the tag to make it work as intended.

Here is a link to the article: Autoplay on Chrome for Android as of version 53

like image 3
ren.rocks Avatar answered Oct 09 '22 16:10

ren.rocks