15

アンドロイド4アイスクリームサンドイッチブラウザを使用してアンドロイドhtml5ビデオを自動起動したいです。私は多くのJavaスクリプト機能とhtml5ビデオの自動バッファリング自動再生タグを試しました。しかし何も働かなかった。私はアンドロイドアプリ経由でwebviewでアンドロイドクロムクライアントを開始し、そのクライアントはビデオを自動開始できるはずです。再生ボタンをクリックすると、ビデオは再生されますが、自動再生は再生されません。アンドロイド4ブラウザを使用した自動スタートhtml5ビデオ

アンドロイドで制限されていますか? その他の注意すべき点は、再生ボタンをクリックしてもchromeClientにコールバックメソッドが呼び出されないことです。&ビデオが再生中です&が完了しました。私はGoogleで検索している&

は、Android 4+がユーザーの操作を必要とするplay()法の要件を変更しているようですアンドロイド4.

+0

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端末のChromeに適用されていますか?おかげで –

答えて

23

に、この問題について何も陽性の結果が見つかりませんでした。 をユーザーイベントハンドラ内(たとえばtouchstartまたはmousedown)からトリガーすると、同じイベントループ内で実行する限り、ビデオを再生できます。

これは、play()を呼び出すために非同期トリガーを使用するのではなく、同じイベントハンドラー内でsetTimeout()などを使わずに再生を呼び出す必要があることを意味します。

1つの方法は、Android 4でiOSと同じトリックを使用することです。動画の最初のユーザーインタラクションイベントはplay()pause()です。これにより、ユーザーが開始した操作中にビデオを再生したため、ビデオを後で操作できるようになります。ビデオの準備が整ったら、コールがイベントハンドラループ内で行われたかどうかにかかわらず、いつでもplayメソッドを呼び出すことができます。

EDIT:ここではHTCやサムスン上で動作するサンプルコードですが、ギャラクシーネクサス4.1(再生するには、ユーザとの対話が必要です)ない:

var myVideo = document.getElementById('myvideo'); 

myVideo.addEventListener('canplay', function() { 
    myVideo.play(); 
}); 

myVideo.load(); 
myVideo.play(); 
+0

ありがとうKrof。これは、WebCromeClientのonShowCustomView、onCompletion、onPreparedなどのすべてのコールバックメソッドが、再生中にビデオのさまざまなイベントに対して呼び出されていないことを意味しますか?もう1つのことビデオの初心者は何を意味しますか?あなたの言及にはチュートリアルや例がありますか? –

+1

この場合の_Primed_は既に再生されたビデオを意味します。これは、ビデオ再生がユーザーによってトリガーされたため、再生できることを意味します。あなたが "WebChromeClient"の意味を理解していない。 –

+0

Krof、これはNexus 4.1で述べたようにSamsung S3&Tab 2.0デバイスでは機能しません。ユーザーの操作が必要です。 –

1

のAndroidは、実際には、このためのAPIを持っています!このメソッドはsetMediaPlaybackRequiresUserGesture()です。私はビデオ自動再生を掘り下げ、SOから多くのハッキングを試みた後にそれを見つけました。ここではブレアvanderhoofからの例です:アンドロイド4.4.4

+0

私はこの質問がHTML5についてはCordovaではないと思います。 – vee

関連する問題