在Android TV上实现完整分辨率的WebView

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

enter image description here


@jaydroider 发现了谜底。devicePixelRatio 是 2! - Nuthinking
你解决了你的问题吗? - Jay Rathod
是的,像素密度翻倍后,960x540等同于全高清。 - Nuthinking
1
有没有解决方法?我的应用程序是1080p的,具有固定的用户界面,我不想更改我的用户界面以适应960x540。 - ToM
1
@Nuthinking,你的解决方案在画布上完美运行,而且很容易缩放。我的问题有所不同,但我找到了一个有点 hackish 的解决方案 :) - ToM
显示剩余4条评论
5个回答

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。我至少希望在960x540的4K上看到像素比为4。

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

然后你买了一台Nvidia Shield,因为它是“4K”,却发现浏览器以960 x 540的分辨率呈现,而在4K下看起来很棒的页面变得像是方块状的不可读的垃圾。


你的意思是Android TV上的浏览器无法以4k渲染吗?是的,将像素比设置为4是有道理的。 - Nuthinking
有没有解决方法?我有一个1080p的应用程序,具有固定的用户界面,我不想更改我的用户界面以适应960x540。在Android TV WebView中是否有一种允许720p或1080p的方法? - ToM

2

使用Android TV的高清电视被认为是960x540像素的显示器,具有2倍的像素比。不确定4K电视如何识别,但要使用所有像素,请检查window.devicePixelRatio。


2
这是我在Android TV 28上所做的事情 我的应用程序原始分辨率为1080p JS代码:
document.body.style.zoom = 1/window.devicePixelRatio

2
如果整个用户界面都是为1080p设计的,我想这可能是一个快速解决方案。不过还是有点粗糙。 - Nuthinking

0

毕竟,有人能够使用分辨率不是960 x 540的屏幕吗? 拥有一台60英寸的电视却只有如此低的分辨率真的很奇怪。


devicePixelRatio 可以起到决定性的作用。它是一个乘数。例如,iPhone 的乘数是 3。我猜你的 devicePixelRatio 是 4。这意味着如果你想以全分辨率显示绘制的画布,则必须将其设置为 3840x2160,然后通过 CSS 缩小 25%。 - Nuthinking

0

您可以使用WebView#setInitialScale根据您的需求缩放网站。要获取所需的比例,您可以使用以下代码:

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

您不应该设置额外的设置,例如setUseWideViewPort,因为它可能会覆盖/忽略比例设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接