15

android4アイスクリームサンドイッチブラウザを使用してandroidhtml5ビデオを自動起動したい。私は多くのjava-script関数とhtml5ビデオの自動バッファ自動再生タグを試しました。しかし、何も機能しませんでした。私はアンドロイドアプリを介してウェブビューでアンドロイドクロームクライアントを起動し、そのクライアントはビデオを自動起動できるはずです。再生ボタンをクリックすると、ビデオは再生されますが、自動再生は再生されません。

Androidでは制限されていますか?その他の注意点は、再生ボタンをクリックしてビデオを再生して完了しても、chromeClientでコールバックメソッドが呼び出されないことです。

私はグーグルで検索しましたが、Android4でこの問題について肯定的な結果は見つかりませんでした。

4

2 に答える 2

23

Android 4以降では、play()ユーザーの操作を必要とするメソッドの要件が変更されたようです。play()ユーザーイベントハンドラー(touchstartまたはなど)内からトリガーする場合mousedown、同じイベントループ内で実行する限り、ビデオを再生できます。

つまり、非同期トリガーを使用してを呼び出すplay()のではなく、同じイベントハンドラー内でsetTimeout()、などを使用せずにplayを呼び出す必要があるため、時間遅延再生などは問題外です。

1つの方法は、Android 4でiOSと同じトリックを使用することです。つまり、最初のユーザーインタラクションイベントplay()pause()ビデオを使用します。これにより、ユーザーが開始したアクション中にビデオを再生したため、後でビデオを操作できるようになります。ビデオのプライミングが正常に完了したら、イベントハンドラーループ内で呼び出されたかどうかに関係なく、後でいつでもplayメソッドを呼び出すことができます。

編集:これはHTCとSamsungで動作するが、Galaxy Nexus 4.1では動作しないサンプルコードです(再生するにはユーザーの操作が必要です):

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

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

myVideo.load();
myVideo.play();
于 2012-08-06T09:51:48.637 に答える
1

Androidには実際にこのためのAPIがあります!メソッドはsetMediaPlaybackRequiresUserGesture()です。ビデオの自動再生とSOからのハッキングの試みを何度も掘り下げた後、私はそれを見つけました。blairvanderhoofの例を次に示します。

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);
    }
}

Android4.4.4で動作します

于 2015-01-14T21:03:53.620 に答える