Подтвердить что ты не робот

Автозапуск html5-видео с помощью браузера android 4

Я хочу автоматически запускать андроид html5 с помощью андроида 4 сэндвич-браузера мороженого. Я пробовал много java- script функций и автозапуска автовоспроизведения тегов html5 видео. Но ничего не получилось. Я запускаю клиент Android-андроида в веб-браузере через приложение Android и этот клиент должен иметь возможность автоматического запуска видео. При нажатии на кнопку воспроизведения воспроизводится воспроизведение, но не автоматическое воспроизведение.

Он ограничен в android? Другое замечание заключается в том, что методы вызова не вызываются в chromeClient, даже когда мы нажимаем кнопку воспроизведения, а видео воспроизводится и завершается.

У меня есть googled и не нашел положительного результата по этой проблеме на Android 4.

4b9b3361

Ответ 1

Кажется, что Android 4+ изменил требования к методу play(), чтобы требовать взаимодействия с пользователем. Если вы вызываете play() из обработчика пользовательских событий (например, touchstart или mousedown), вы можете воспроизводить видео до тех пор, пока вы запускаете его внутри одного цикла событий.

Это означает, что вы не должны использовать асинхронные триггеры для вызова play(), а скорее вызовите воспроизведение внутри одного обработчика событий без setTimeout() и т.д., поэтому такие вещи, как воспроизведение с задержкой по времени, не могут быть и речи.

Один из способов - использовать тот же трюк на Android 4, что и в iOS, - использовать первое событие взаимодействия с пользователем play() и pause() видео. Это позволит видео для манипуляции позже, так как вы играли его во время инициированного пользователем действия. После того, как вы успешно загрузили видео, вы можете вызвать методы воспроизведения в любое время позже, независимо от того, был ли вызов выполнен внутри цикла обработчика событий или нет.

EDIT: Здесь пример кода, который работает на HTC и Samsung, но не на Galaxy Nexus 4.1 (требуется взаимодействие с пользователем):

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

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

myVideo.load();
myVideo.play();

Ответ 2

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