Android html5ビデオを使用してAndroid 4アイスクリームサンドイッチブラウザーを自動開始します。多くのJavaスクリプト機能とhtml5ビデオの自動バッファタグを自動バッファリングしてみました。 Android chromeアプリ経由でWebviewのクライアントを起動しますAndroidアプリとそのクライアントは自動でビデオを開始します。再生ボタンをクリックすると、ビデオは再生されますが自動再生はされません。
それはアンドロイドで制限されていますか?その他の注意点は、再生ボタンをクリックしても、ビデオが再生および完了しても、chromeClientでコールバックメソッドが呼び出されないことです。
Android 4。
Android 4+がplay()
メソッドの要件を変更してユーザーの操作を要求するようです。ユーザーイベントハンドラー内からplay()
をトリガーすると例:touchstart
またはmousedown
)、同じイベントループ内で実行する限り、ビデオを再生できます。
つまり、非同期トリガーを使用してplay()
を呼び出すのではなく、setTimeout()
などなしで同じイベントハンドラー内でplayを呼び出す必要があるため、時間遅延再生のようなものは質問。
1つの方法は、Android 4でiOSと同じトリックを使用することです。最初のユーザー操作イベントを使用して、ビデオをplay()
およびpause()
します。これはユーザーが開始したアクション中に動画を再生したため、後で操作できるようになります。動画の準備ができたら、呼び出しがイベントハンドラループ内で行われたかどうかに関係なく、後でいつでも再生メソッドを呼び出すことができます。ない。
編集:これは、HTCとSamsungで動作するが、Galaxy Nexus 4.1では動作しないサンプルコードです(再生するにはユーザーの操作が必要です):
var myVideo = document.getElementById('myvideo');
myVideo.addEventListener('canplay', function() {
myVideo.play();
});
myVideo.load();
myVideo.play();
Androidには実際にこのためのAPIがあります。メソッドはsetMediaPlaybackRequiresUserGesture()です。ビデオの自動再生を何度も掘り下げ、SOからハッキングを試みた後、それを見つけました。これがブレアヴァンダーホーフの例です。
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