2013-04-11 3 views
6

Я разработал приложение, в котором пользователь может установить видео на веб-странице: - Они могут указать URL Youtube ИЛИ - Они могут загрузить видеоAndroid WebView html5 видео автозапуск не работает на Android 4.0.3

в зависимости от того, какой вариант пользователь выбирает я сделать видео страницу, как это: Если видео с YouTube:

<iframe type="text/html" width="640" height="385" src="http://www.youtube.com/embed/YOUTUBEID?autoplay=1&loop=1&autohide=1&fs=0" frameborder="0"></iframe> 

Если видео загружается:

<video id="video" style="cursor: pointer;" width="640" height="480" autoplay controls loop> 
    <source src="../video/Tareas_Diarias_Resumen.mp4" type="video/mp4" /> 
</video> 

OK. Все это отлично работает на Google Chrome, но факт заключается в том, что видео будет смотреть на 16 Samsung GT-P5100 Android 4.03 Tablets.

Мы создали Android-приложение, которое встраивает в WebView подобное:

WebView engine = (WebView) findViewById(R.id.web_engine); 
engine.setWebChromeClient(new WebChromeClient()); 
engine.getSettings().setPluginsEnabled(true); 
engine.getSettings().setPluginState(PluginState.ON); 
engine.getSettings().setJavaScriptEnabled(true); 
engine.getSettings().setAllowFileAccess(true); 
engine.loadUrl(miUrl); 

А вот у меня есть два вопроса: 1 Youtube видео. Он работает нормально, я вижу видео, но без автозапуска, и мы хотим, чтобы он работал с автозапуском. Любое решение? 2- Загруженное видео не работает, я вижу игрока, но нет видео.

Видео было преобразовано с помощью ручного тормоза, выбирая iphone & предустановленный ipod-touch и опцию «Оптимизированный Интернет».

Любая помощь или подсказка? Заранее спасибо

+0

Автовоспроизведение на большинстве мобильных платформ (Android, iOS) блокируется, чтобы избежать плохих пользовательских впечатлений - видео должно воспроизводиться только после действия пользователя. Обычно вы можете обойти это, вызвав игру() на другое событие (например, событие onloaded) – Offbeatmammal

+0

@Offbeatmammal вы можете написать это как ответ, чтобы закрыть этот вопрос? Благодарю. Я нашел это также http://www.longtailvideo.com/html5/autoloop/ –

+0

, хотя похоже, что есть уже принятый ответ – Offbeatmammal

ответ

7

[модернизировано ответить за запрос]

автозапуска на большинстве мобильных платформ (Android, IOS) блокируется, чтобы избежать плохого опыта пользователей - видео должно играть только после действия пользователя. Обычно вы можете работать вокруг него, вызывая игру() на другое событие (например, OnLoaded событие)

0

Этого не может быть достигнуто, автовоспроизведение на большинстве мобильных платформ (Android, iOS) блокируется, чтобы избежать неприятных ощущений пользователей. Посмотрите на это: http://www.longtailvideo.com/html5/autoloop/

4

для Android 4.0.x, попробуйте запуская событие: loadstart

var vid=document.getElementById('video'); 
vid.addEventListener("loadstart", showVideo, false); 
function showVideo(e) { 
    vid.play(); 
} 
+2

Я согласен. Для Android <4.2.2 кажется, что последнее событие DOM, которое вы получаете, это «загруженные данные». Вероятно, вы не получите «canplaythrough». Чтобы автовоспроизвести, вы затем используете javascript 'var myvideo = document.getElementsByTagName ('video') [0]; myvideo.play(); 'Для Android 4.2.2+ все, что вам нужно в вашем собственном коде, это' WebView.getSettings(). setMediaPlaybackRequiresUserGesture (false); ' –

19

автовопроизведение отключена, так как Android SDK 17, но вы можете установить setMediaPlaybackRequiresUserGesture в false, чтобы снова включить автовоспроизведение. Не забудьте проверить версию SDK, поскольку в предыдущих версиях такой функции нет.

int SDK_INT = android.os.Build.VERSION.SDK_INT; 
    if (SDK_INT > 16) { 
     engine.getSettings().setMediaPlaybackRequiresUserGesture(false); 
    } 
+3

не работает для меня.Что не так? Я тестирую в Android 5.0 –

Смежные вопросы