I am overriding WebViewClient
's shouldInterceptRequest
method to provide a local video stream. The video plays and pauses fine, but the user can't scrub at all--playback just continues from the same spot. How can I make it so the user can change the playback location?
Code:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val webView = findViewById<WebView>(R.id.webView)
WebView.setWebContentsDebuggingEnabled(true)
webView.webViewClient = object : WebViewClient() {
override fun shouldInterceptRequest( view: WebView?, request: WebResourceRequest?
): WebResourceResponse? {
if (request?.url.toString().contains("1.mp4")) {
return WebResourceResponse(
"video/mp4",
"UTF-8",
resources.openRawResource(R.raw.movie)
)
}
return super.shouldInterceptRequest(view, request)
}
}
webView.loadDataWithBaseURL(
"http://fake.com",
"""
<!DOCTYPE html>
<html>
<p>Video 1:</p>
<p><video src="http://fake.com/1.mp4" /></p>
</html>
""".trimIndent(), "text/html", StandardCharsets.UTF_8.name(), null
)
}
Here is a repo with the problem. Please note that this isn't the real use case, just a minimal example.
from Can't scrub video in Webview provided by WebViewClient's shouldInterceptRequest
No comments:
Post a Comment