2013-12-04 3 views
9

Я использую Android Webview для воспроизведения видео html5, в том числе видео Youtube (мои собственные теги и встроенные iFram Youtube). У меня возникла проблема с Samsung Galaxy S4 по следующему сценарию:Android (Samsung S4) HTML5 видео паузы

  1. Воспроизвести видео.
  2. Нажмите «назад» во время воспроизведения видео (просмотр закрывается)
  3. Открыть представление еще раз и нажать 'play'.
  4. Видео начинает воспроизводиться и сразу же приостанавливается. С этого момента это будет происходить для каждого видео, которое я попытаюсь воспроизвести.

Я попробовал это на тестовой среде с двумя рода Webviews: «регулярный» Android WebView и HTML5 webview

Единственный «подозрительный», что я вижу, это ошибка при нажатии на «назад» (Android ошибки):

sendUserActionEvent() mView == null 

Это проблема с галактикой S4? Проблема с Android? Есть идеи?

Тпх, Янов

+1

Я также получил такое поведение см http://stackoverflow.com/questions/20814894/opening-an-activity-with-a-webview-containing-a-html5-video-for-a-second- время и это видео http://www.youtube.com/watch?v=0MpSpfJNyOk. Все равно никакого результата. Удалось ли вам найти решение? –

ответ

13

Оказывается, что если AudioService не имеет фокус при закрытии Webview, он не остановился. Это вызывает ряд вопросов (еще один игрок не может начать играть и т.д.)

Единственное решение, которое работало для меня:

@Override 
protected void onPause() { 
    super.onPause(); 
    ((AudioManager)getSystemService(
      Context.AUDIO_SERVICE)).requestAudioFocus(
        new OnAudioFocusChangeListener() { 
         @Override 
         public void onAudioFocusChange(int focusChange) {} 
        }, AudioManager.STREAM_MUSIC, 
        AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); 
} 

Это приведет к тому, текущий игрок будет приостановлена ​​/ убит (не уверен, какой), когда спуститься и решить все проблемы/проблемы.

+2

Я бы дал вам 10000 очков за этот ... борется часами ... –

1

Предыдущий ответ на меня не работает в Android Kitkat, следующий ответ будет корректно работать на всех платформах.

try { 
     Class.forName("android.webkit.WebView") 
       .getMethod("onPause", (Class[]) null) 
       .invoke(webView, (Object[]) null); 
    } catch (ClassNotFoundException cnfe) { 
     cnfe.printStackTrace(); 
    } catch (NoSuchMethodException nsme) { 
     nsme.printStackTrace(); 
    } catch (InvocationTargetException ite) { 
     ite.printStackTrace(); 
    } catch (IllegalAccessException iae) { 
     iae.printStackTrace(); 
    } catch (NullPointerException nullPointerException) { 
     nullPointerException.printStackTrace(); 
    } 
Смежные вопросы