Tôi có ứng dụng hiển thị trang HTML5 có phần tử video trong WebView. Phải mất một thời gian để tìm ra cách để làm cho video hoạt động, nhưng cuối cùng tôi đã thành công để phát video được nhúng trong một WebView trên một Tab Samsung Galaxy (Android 3.1). Tôi đã sử dụng mã sau cho thẻ video:Chặn yêu cầu nguồn video HTML5 trong Android WebView
<video controls poster="img/poster.jpg" height="240" width="360">
<source src="video/BigBuck.m4v">
<source src="video/BigBuck.theora.ogv" type="video/ogg">
<source src="video/BigBuck.webm" type="video/webm">
HTML5 video not supported.
</video>
Phần tử video có nhiều nguồn và giờ tôi đang cố chụp nguồn video đã chọn (và định dạng) trước khi video bắt đầu phát. Khi tôi nhấp vào nút phát, tôi thấy yêu cầu HTTP cho tệp video đến máy chủ web nơi tệp video được lưu trữ nhưng tôi không thành công trong việc chặn yêu cầu này ở phía ứng dụng.
Tôi đã xem xét một số phương pháp để xem liệu yêu cầu cho tệp video có vượt qua ở đó hay không, nhưng tôi không thấy nó chuyển vào bất kỳ tệp nào trong số đó.
- Chỉ trong
shouldOverrideUrlLoading(WebView view, String url)
trong sốWebViewClient
chỉ yêu cầu trang HTML5 ban đầu của tôi. - Trong
shouldInterceptRequest (WebView view, String url)
trong sốWebViewClient
Tôi chỉ thấy chuyển yêu cầu trang HTML5 ban đầu và yêu cầu cho hình ảnh áp phích video chứ không phải cho tệp video. onShowCustomView(View view, CustomViewCallback callback)
trong sốWebChromeClient
chỉ được gọi khi tôi nhấp vào nút điều khiển toàn màn hình trên trang HTML5 khi video đang phát, nhưng không phải khi tôi nhấp vào nút phát. (Mục đích của phương pháp này thực sự là gì?)
Có ai có đề xuất phương pháp khác để tôi có thể yêu cầu tệp video hoặc bất kỳ ai có thể giải thích cho tôi điều gì thực sự xảy ra khi tôi nhấp vào nút phát phần tử video?
Bạn có thể đăng mã bạn sử dụng cho thẻ video không. Gần đây tôi đã xử lý điều đó và 'shouldOverrideUrlLoading (xem WebView, String url)' đã làm việc cho tôi (trong Gingerbread). –