Reputation: 11
I have an old TV running Android 4.4.4, and I created a simple app using WebView to render YouTube specifically for the TV. The app loads the YouTube TV page (https://www.youtube.com/tv) fine, but videos don't play—they just show a gray poster image. Sometimes the app even crashes when trying to play a video.
I built this app because the regular browser doesn't support fullscreen properly, and I wanted a cleaner experience directly in an app.
package com.example.youtubetv_staging
import android.annotation.SuppressLint
import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val webView = findViewById<WebView>(R.id.webview)
val webSettings = webView.settings
webSettings.javaScriptEnabled = true
webSettings.domStorageEnabled = true
webSettings.setSupportZoom(false)
webSettings.builtInZoomControls = false
webSettings.displayZoomControls = false
webSettings.allowFileAccess = true
webSettings.allowContentAccess = true
webSettings.cacheMode = WebSettings.LOAD_NO_CACHE
webView.webChromeClient = WebChromeClient()
webView.setBackgroundColor(Color.TRANSPARENT)
webSettings.mediaPlaybackRequiresUserGesture = false
webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null)
webView.webViewClient = object : WebViewClient() {
override fun onReceivedError(view: WebView, request: WebResourceRequest, error: android.webkit.WebResourceError) {
super.onReceivedError(view, request, error)
Log.e("WebView", "Error loading page")
}
}
webView.webChromeClient = WebChromeClient()
webView.loadUrl("https://www.youtube.com/tv")
}
}
Upvotes: 1
Views: 66