改变安卓 10 源码里的 density,为什么有些 App 会识别为手机? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zinwalin
V2EX    Android

改变安卓 10 源码里的 density,为什么有些 App 会识别为手机?

  •  
  •   zinwalin 2022-05-18 10:04:53 +08:00 11698 次点击
    这是一个创建于 1242 天前的主题,其中的信息可能已经有所发展或是发生改变。

    运行某些 App 在手机或安卓平板时,手机上只能竖屏显示,平板是强制横屏。

    在我们的平板上,发现当把 density 从 160 改为 240 时,这些 App 只能竖屏显示,也就是被当成手机了。

    请教下,density 对应到手机或平板是一个什么机制,有没有办法让 App 强制识设备为平板?

    10 条回复    2022-06-19 21:25:50 +08:00
    gam2046
        1
    gam2046  
       2022-05-18 10:10:32 +08:00
    平板强制横屏是怎么个强制法?

    如果显示区域居中,两边留黑边竖屏显示应用内容,可以尝试(我在 Android9 测试通过)修改:

    https://cs.android.com/android/platform/superproject/+/android-9.0.0_r42:frameworks/base/core/res/res/values/config.xml;l=2546;drc=970bf5a6b3db9724b8c9b6d235b65495f7dcb411 值为 true 。

    如果你的代码中默认方向并不是横屏方向,可以参考这里的代码修改
    https://cs.android.com/android/platform/superproject/+/android-9.0.0_r42:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java;l=7243;drc=11768fd80fe62e66df0651b3301315afeb234abb
    654656413245
        2
    654656413245  
       2022-05-18 13:43:31 +08:00 via iPhone
    app manifest 看看 orientation 的 aspectRatio 属性
    zinwalin
        3
    zinwalin  
    OP
       2022-05-18 17:45:20 +08:00
    @654656413245 我们是安卓系统和平板提供商,要适配别人家的 App
    zinwalin
        4
    zinwalin  
    OP
       2022-05-18 17:45:29 +08:00
    @gam2046 谢谢。
    zinwalin
        5
    zinwalin  
    OP
       2022-05-18 17:45:34 +08:00
    @654656413245 谢谢
    zinwalin
        6
    zinwalin  
    OP
       2022-05-18 17:48:01 +08:00
    @gam2046 有个 App 运行在我们的平板上,一启动就显示为横屏画面。 但是把 density 从 160 改为 240 后, 变为了竖屏显示,也就是平板被当成手机运行。 所以我想知道改变 density 为什么会导致 App 判断出错。
    gam2046
        7
    gam2046  
       2022-05-18 18:00:12 +08:00
    @zinwalin #6
    > density 为什么会导致 App 判断出

    不可控的行为,这是应用开发商自己的判断逻辑。早年间我看到过一些第三方写的文章,通过判断屏幕密度来猜测设备是否属于手机,因为一般手机的屏幕素质都会高出其他 Android 设备(平板、电视)一大截。

    我这是做的 Android TV 机顶盒开发,也是为了一些仅支持的竖屏的应用能够在 ATV 上跑起来。虽然不知道这样做有什么意义,毕竟这类应用根本不支持遥控器操作,但是客户是这么要求的。

    从你的表述看,你说的横屏应该和我想的不是同一个。你只是需要给重力感应的默认方向就行了(原则上这都不需要你修改,只要相关的传感器驱动是正常工作的,aosp 里已经有了相关判断),比我这个容易,也不涉及显示驱动那一块的修改。
    zinwalin
        8
    zinwalin  
    OP
       2022-05-18 20:17:36 +08:00
    @gam2046 嗯 。 我换个说法,density 的变化是不是会导致一些 aspectRatio 的变化?
    SGRRYRS
        9
    SGRRYRS  
       2022-06-16 14:45:17 +08:00
    你猜为什么 TV dpi 是约 213?"适用于密度介于 mdpi 和 hdpi 之间的屏幕(约 213dpi )的资源。这不属于“主要”密度组。它主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将视情况对其进行缩放。如果您发现有必要提供 tvdpi 资源,应按一个系数来确定其大小,即 1.33*mdpi 。例如,如果某张图片在 mdpi 屏幕上的大小为 100px x 100px ,那么它在 tvdpi 屏幕上的大小应该为 133px x 133px 。"
    zinwalin
        10
    zinwalin  
    OP
       2022-06-19 21:25:50 +08:00
    @gam2046 试了改变重力感应方向,某些 App 并没有横竖屏切换。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6106 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 432ms UTC 03:11 PVG 11:11 LAX 20:11 JFK 23:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86