Java服务器端客户端屏幕分辨率检测

时间:2013-12-23 14:44:18

标签: java servlets

我首先要说的是,How can I get the screen resolution in java?

已经在一定程度上回答了这个问题

我的问题不是如何获得客户端的屏幕分辨率,而是解释Toolkit,GraphicsDevice和Javascript屏幕检测返回的值,更重要的是它们为什么不一致。通过这种方式,我希望能够更好地检测用户(客户端)的屏幕分辨率。

我正在自己的机器上进行测试,并设置了多种检测客户端屏幕分辨率的方法。我有一个双显示器设置,但我只在其中一个显示器上运行浏览器。第一台显示器是1920X1080,第二台是1680X1050。

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dimension = toolkit.getScreenSize();
System.out.println(dimension.width + "/" + dimension.height); //3600X1093

这种方法似乎最精确,因为它实际上返回了两个监视器的分辨率。它返回值3600X1093

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
System.out.println(width + "/" + height); //1920X1080

此方法似乎返回第一个监视器的值。我假设我可以通过更改默认屏幕设备来获得第二台显示器,但我无法知道用户使用的是哪种显示器,这是一个有争议的问题。尽管如此,它返回值1920X1080。

var width = screen.width;
var height = screen.height;
console.log(width + "/" + height); //1680X1050

看起来javascript是最精确的(显然......),因为它知道浏览器窗口的实际价值。我知道我无法实现这个服务器端,但我包含了javascript,因为我将服务器端值与之比较。

首先,更好的选择似乎是工具包方法。这是否实际检测到客户端的分辨率,还是返回服务器当前运行的监视器的值?如果它返回客户端值,它是如何获得的?

在服务器上检测客户端分辨率的主要原因是因为我想构建一个自适应图像服务器。换句话说,检测最大屏幕尺寸并返回合适的图像。

任何人都可以解释这些方法之间的差异,以及哪一个(或许可能是另一个)最适合检测客户端的分辨率?

1 个答案:

答案 0 :(得分:3)

java版本只返回服务器的值,因为它纯粹是服务器端。拥有客户端java的唯一方法是使用applet。

因此,我建议使用javascript解决方案。