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 上看起来很模糊