首页 文章

使用android 4浏览器自动启动html5视频

提问于
浏览
15

我想使用android 4冰淇淋三明治浏览器自动启动android html5视频 . 我尝试了许多html5视频的java脚本函数和autobuffer autoplay标签 . 但没有任何效果 . 我通过Android应用程序在webview中启动android chrome客户端,该客户端应该能够自动启动视频 . 单击播放按钮时播放视频但不播放自动播放 .

是否限制在Android?另外需要注意的是,即使我们点击播放按钮并且视频正在播放和完成,也不会在chromeClient中调用回调方法 .

我已经google了一下,在Android 4上找不到关于此问题的正面结果 .

2 回答

  • 2

    似乎Android 4改变了 play() 方法的要求以要求用户交互 . 如果从用户事件处理程序(例如 touchstartmousedown )中触发 play() ,则只要在同一事件循环中运行该视频,就可以播放该视频 .

    这意味着您不应该使用异步触发器来调用 play() ,而是在没有 setTimeout() 的情况下在同一个事件处理程序中调用play等等,所以像延时播放这样的东西是不可能的 .

    一种方法是在Android 4上使用与在iOS中相同的技巧 - 使用第一个用户交互事件 play()pause() 视频 . 这将使视频能够在以后进行操作,因为您在用户启动的操作期间播放了该视频 . 成功启动视频后,无论是否在事件处理程序循环内进行调用,您都可以在以后随时调用播放方法 .

    EDIT: 这是一个适用于HTC和三星的示例代码,但不适用于Galaxy Nexus 4.1(需要用户交互才能玩):

    var myVideo = document.getElementById('myvideo');
    
    myVideo.addEventListener('canplay', function() {
      myVideo.play();
    });
    
    myVideo.load();
    myVideo.play();
    
  • 23

    Android实际上有一个API!该方法是setMediaPlaybackRequiresUserGesture() . 经过大量的视频自动播放和SO的大量尝试攻击后我才发现它 . 以下是blair vanderhoof的一个例子:

    package com.example.myProject;
    
    import android.os.Bundle;
    import org.apache.cordova.*;
    import android.webkit.WebSettings;
    
    public class myProject extends CordovaActivity 
    {
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            super.init();
            // Set by <content src="index.html" /> in config.xml
            super.loadUrl(Config.getStartUrl());
            //super.loadUrl("file:///android_asset/www/index.html");
    
            WebSettings ws = super.appView.getSettings();
            ws.setMediaPlaybackRequiresUserGesture(false);
        }
    }
    

    适用于Android 4.4.4

相关问题