Android TV 上的全分辨率 WebView

Posted

技术标签:

【中文标题】Android TV 上的全分辨率 WebView【英文标题】:Full resolution WebView on Android TV 【发布时间】:2016-06-27 20:55:59 【问题描述】:

在 1080p 模拟器和智能电视 (nVidia Shield) 上,我只能获得 960x540 的 WebView。是否可以使用可用的整个分辨率?

【问题讨论】:

@jaydroider 发现了这个谜团。 devicePixelRatio 为 2! 你的问题解决了吗? 是的。作为像素密度的两倍,960x540 等于全高清。 对此有任何修复吗?我有一个 1080p 的应用程序,具有固定的 UI 我不想更改我的 UI 以适应 960x540。 @Nuthinking 您的解决方案与画布完美配合,易于缩放。我的问题不同,但我资助了一个有点骇人听闻的解决方案:) 【参考方案1】:

使用 android TV 的 HDTV 被视为 960x540 像素的显示器,像素比为 2 倍。不确定如何识别 4k 电视,但要使用所有像素,请检查 window.devicePixelRatio 。

【讨论】:

【参考方案2】:

我正在寻找相同问题的答案,但我可以确认以下内容。

1080p 电视测试

在设置中配置为仅使用 1080p 60Hz 的每个设备

Amazon Firestick 在所有测试的浏览器中均获得 960 x 540 像素。

Shield TV 在所有测试的浏览器中均获得 960 x 540 像素。

新的 Amazon Fire TV Cube 在所有经过测试的浏览器中均获得 960 x 540 像素。

4K 电视测试

Amazon Firestick(不兼容 4K)在所有经过测试的浏览器中均获得 960 x 540 像素。

Shield TV(输出设置为 4K 60Hz)在所有测试的浏览器中均获得 960 x 540 像素。

新的 Amazon Fire TV Cube(输出设置为 4K 60Hz)在所有测试的浏览器中均获得 960 x 540 像素。

更奇怪的是,1080p 和 4K 都测试报告的像素比率 是 2。我至少希望在 4K 上看到 960x540 的像素比为 4

我使用连接到 PC 的电视来显示大型状态数据表。 当充分利用 70 英寸 4K 电视时,可以显示数百种不同的信息,这是一件美妙的事情。

然后你会得到一个 Nvidia Shield,因为它的“4K”并发现浏览器以 960 x 540 呈现,而在 4K 中看起来很棒的页面看起来像块状难以辨认的废话。

【讨论】:

您的意思是说 Android TV 中的浏览器无法以 4k 渲染?是的,将像素比设置为 4 是有意义的。 对此有任何修复吗?我有一个 1080p 的应用程序,具有固定的 UI,我不想更改我的 UI 以适应 960x540。有没有办法在 Android TV WebView 中允许 720p 或 1080p?【参考方案3】:

这就是我在 Android TV 28 中所做的 我的应用原始分辨率是 1080p

JS代码:

document.body.style.zoom = 1/window.devicePixelRatio

【讨论】:

如果整个 UI 是为 1080p 设计的,我想这可能是一个快速修复。不过还是有点老套。【参考方案4】:

您可以根据需要使用 WebView#setInitialScale 来缩放网站。要获得想要的规模,您可以使用以下代码:

Point metrics = new Point();
((WindowManager) context.getSystemService(WIDNOW_SERVICE)).getDisplay(metrics);
int scale = (int) (((double) metrics.x) / 3840/*SCREEN_WIDTH*/ * 100);

您不应设置其他设置,例如 setUseWideViewPort,因为它会覆盖/忽略比例设置。

【讨论】:

以上是关于Android TV 上的全分辨率 WebView的主要内容,如果未能解决你的问题,请参考以下文章

布局元素在 4K 屏幕 Android TV 上看起来很模糊

webview上的Html5视频缺少棒棒糖上的全屏按钮

Android TV开发总结TV上屏幕适配总结

Android TV 中的真实 4K

如何在 Android TV [SDK 22] 上缩小 WebView?

Android tv:标题片段中每个项目的 Webview