黑鲨社区
标题:
6.39寸的黑鲨2会被游戏识别为8寸的平板?
[打印本页]
作者:
Mi_1109083003
时间:
2019-5-31 20:02
标题:
6.39寸的黑鲨2会被游戏识别为8寸的平板?
本帖最后由 Mi_1109083003 于 2019-6-1 01:04 编辑
(, 下载次数: 134)
上传
点击文件名下载附件
我有好几个游戏都被识别成了平板模式,还不能调整,放在6寸的手机上根本看不清
作者:
默戮小生
时间:
2019-5-31 20:16
dpi调过没?
作者:
Mi_1109083003
时间:
2019-5-31 22:19
默戮小生 发表于 2019-5-31 20:16
dpi调过没?
没调过
作者:
Mi_1109083003
时间:
2019-5-31 23:48
按照软件获取出来的屏幕分辨率信息(我同时核对了一遍adb shell dumpsys window),黑鲨的这个屏幕明显数据有错,Logical Density 或者 XDPI / YDPI 中的其中一个值有错。
我更倾向于是XDPI / YDPI
(, 下载次数: 134)
上传
点击文件名下载附件
作者:
Mi_1109083003
时间:
2019-6-1 00:33
本帖最后由 Mi_1109083003 于 2019-6-1 00:58 编辑
首先我们先确定至少一个正确值,也就是屏幕的分辨率 Screen Width(px),假定这个值 1080 × 2340 的值没有错的话,那么我们开始按照列表里的值推算,这里有一个公式:
√( ( Xpx ÷ Xdpi × α )² + ( Ypx ÷ Ydpi × α )² ) = β × α
Xpx 为横向分辨率,同理 Ypx;Xdpi 为横向每英寸上的像素数量,同理 Ydpi;
带入数值到这个公式
√( ( 1080 ÷ 318.976 × α )² + ( 2340 ÷ 319.548 × α )² ) =
β
× α
#
β
为屏幕理论尺寸,黑鲨2官方公布为
6.39
,
这里的 α 是理论像素密度(Logical Density),这个值会根据Density DPI 改变而改变,通常来说是Density DPI ÷ 160 = Logical Density,这个160是一个标准值(mDPI)。这里截图显示的 Logical Density 为 2.63 是因为 Density DPI 被我手动改成了 420 ,
既然像素密度(LD)是根据DPI计算出来的,而DPI是没有错的,我们可以先排除像素密度有错,将像素密度带入这个公式
√( ( 1080 ÷ 318.976 × 2.63 )² + ( 2340 ÷ 319.548 × 2.63 )² ) =
6.39
× 2.63
√( ( 8.904745)² + (19.259078)² ) =
6.39
× 2.63
√( 79.294483 + 370.912085 ) =
6.39
× 2.63
√( 450.206568 ) =
6.39
× 2.63
将这个数开方后,问题出现了
21.218071 ≠
6.39
× 2.63
前面我们说过
6.39
是一个 β 值,这个β值我们暂时给他假定位黑鲨2 的
6.39
寸屏
那么这个β值的正解是多少呢?
20.7226115 ÷ 2.63 = 8.067707,也就是约等于图中的 Diagonal (理论尺寸)8.07寸
这个尺寸明显是不对的,既然我们这个公式里的屏幕分辨率(Xpx / Ypx ) 假定正确,同时像素密度(2.63)不可能有错,那么唯一解就是 Xdpi 和 Ydpi 的值完全不对,甚至是错得离谱
作者:
Mi_1109083003
时间:
2019-6-1 00:49
比对我手上的另一台屏幕大小和分辨率(手动调整)都和黑鲨相仿的 S8+
(, 下载次数: 136)
上传
点击文件名下载附件
这里面可以看到在近似分辨率(1080p)与相同 Logical Density 的情况下,S8+ 的 Xdpi 和 Ydpi 达到了 391 和 394 。当然这个值并不太有参考价值,因为S8 这本身是一块 2K 的屏幕,单英寸上像素数量比黑鲨2 高是很正常的,这里提到 S8+ 只是为了证明“当各个数值都正确的时候,这个公式的计算结果到底是什么”
同样的公式:
√( ( Xpx ÷ Xdpi × α )² + ( Ypx ÷ Ydpi × α )² ) = β × α
带入数据
√( ( 1080 ÷ 391.8855 × 2.63 )² + ( 2094 ÷ 394.3215 × 2.63 )² ) =
5.99
× 2.63
√(
52.53401 + 195.058076
) =
5.99
× 2.63
√(
247.592086
) =
5.99
× 2.63
#这里我们把 2.63 移到等号左边
15.735059 ÷ 2.63 =
5.982912
≈
5.99
当所有数据都正确的时候,计算结果是近似等于 Diagonal(理论屏幕尺寸)值的,也和三星官方宣称的值近似。三星官方宣称是“不含圆角四边的可触摸面积为 6.1 英寸,包含圆角为 6.2 英寸”,考虑到诸多误差,这个值实际上可以完全等于官方给出的数值的。
这就是为了证明,
“当各个数值都正确的时候,这个公式的计算结果到底是什么”。
作者:
Mi_1109083003
时间:
2019-6-1 00:57
本帖最后由 Mi_1109083003 于 2019-6-4 20:36 编辑
其实这个东西是怎么发现的,Google Play 上有个我常玩的游戏,这游戏在 S8+ 上工作正常,UI 是手机的界面,然而到了黑鲨2上界面就变成了平板的界面。
我用命令 “
adb shell wm size 1080 × xxxx
” 不断调试,终于发现:
在 1080 × 2315 的时候,计算出来的理论屏幕尺寸会达到 8 寸,同时这个游戏的 UI 会变为平板UI;
在 1080 × 2310 的时候屏幕尺寸是7.99寸,游戏 UI 还是正常的手机 UI
等于说这游戏完全是靠计算理论屏幕尺寸来自动识别你用的是平板还是手机。
然而非常不幸,在黑鲨2上直接把我的手机认成了平板,密密麻麻的 UI 堆积在6寸屏上啥都看不见,才突然有兴趣研究一下黑鲨2的分辨率配置是怎么调配的(甚至为了算公式还写了段Java代码)
欢迎光临 黑鲨社区 (http://159.75.202.8:8080/)
Powered by Discuz! X3.3