代号为One应用程序以较低分辨率运行(Android)

本教程将介绍代号为One应用程序以较低分辨率运行(Android)的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

代号为One应用程序以较低分辨率运行(Android) 教程 第1张

问题描述

我正在三星Galaxy Tab A 10.1(2019)上测试我的应用程序(调试版本)。设备分辨率为1200 x 1920。但是,当我使用getDisplayWidth()和getDisplayHeight()时,我得到900 x 1359(=1440-状态栏)。因此,这款应用程序的分辨率较低,确实图形看起来有点粗糙。但当我截屏时,它的分辨率是1200x1920。Galaxy Tab A没有更改屏幕分辨率的选项,我也找不到解决这个问题的方法。

这是已知问题吗?是否有解决方案?

编辑:临时解决方案是更改(已知应用程序的)包名称。使用NativeLogsReader.cn1lib我们获得

1)原始包名:

--------- beginning of main
05-17 13:09:35.879 24347 24347 D ViewRootImpl@34e19e6[MainStub]: Relayout returned: 
old=[0,0][1200,1920] new=[0,0][900,1440] result=0x7 surface={true 3890690048} changed=true

2)已更改包名称:

--------- beginning of main
05-17 13:22:46.459 26231 26231 D ViewRootImpl@34e19e6[MainStub]: Relayout returned: 
old=[0,0][1200,1920] new=[0,0][1200,1920] result=0x7 surface={true 3890690048} changed=true

因此,对于原始包名,解析是Reduced,而对于更改的包名,解析保持本机。我在谷歌上搜索了这个问题,没有找到其他的例子或线索。

编辑2:原始软件包名(com.xx.yy)和测试软件包名(com.xx.yy2)的设备控制台输出。

1)所有输出,按包名称筛选:

a)原包名:

2020-05-18 11:12:48.174 3915-4148/? D/StorageManagerService: getExternalStorageMountMode : final mountMode=1, uid : 10163, packageName : com.xx.yy
2020-05-18 11:12:48.175 3915-4148/? I/ApplicationPolicy: isApplicationExternalStorageWhitelisted:com.xx.yy user:0
2020-05-18 11:12:48.175 3915-4148/? D/ActivityManager: package  com.xx.yy, user - 0 is SDcard whitelisted
2020-05-18 11:12:48.175 3915-4148/? I/ApplicationPolicy: isApplicationExternalStorageBlacklisted:com.xx.yy user:0
2020-05-18 11:12:48.175 3915-4148/? I/ApplicationPolicy: isApplicationExternalStorageBlacklisted:com.xx.yy user:0
2020-05-18 11:12:48.194 3915-3933/? I/ActivityManager: Start proc 13627:com.xx.yy/u0a163 for activelaunch com.xx.yy/.MainStub
2020-05-18 11:12:48.199 13627-13627/? I/com.xx.yy: Late-enabling -Xcheck:jni
2020-05-18 11:12:48.235 13627-13627/? I/com.xx.yy: report jit thread pid = 13632
2020-05-18 11:12:48.238 4834-4985/? I/SAPrinter: sendEvent :{cd=det3packageNamecom.xx.yy, t=ev, en=1001, pn=201, ts=1589793168238}
2020-05-18 11:12:48.249 3915-4194/? I/ActivityManager: START u0 {act=android.intent.action.MAIN typ=null flg=0x10200000 cmp=ComponentInfo{com.xx.yy/com.xx.yy.MainStub}} from uid 10010
2020-05-18 11:12:48.252 3915-4194/? I/ActivityManager: [IOP] sourceDir : /data/app/com.xx.yy-i4NuDIQRBO8c4W1IO7HhTA== in ActivityStacksupervisor
2020-05-18 11:12:48.266 3572-3572/? I/SurfaceFlinger: id=2615 createSurf (3840x3840),2 flag=4, AppWindowToken{e37293b token=Token{b713ca ActivityRecord{cd6e335 u0 com.xx.yy/.MainStub t69}}}#0
2020-05-18 11:12:48.272 3915-4311/? I/ActivityManager: DSS on for com.xx.yy and scale is 0.75

请注意‘刻度为0.75’。

b)测试包名称:

...(similar)...
2020-05-18 11:08:43.650 3915-5720/? I/ActivityManager: DSS on for com.xx.yy2 and scale is 1.0

请注意‘Scale is 1.0’。

2)具体调试应用输出:

a)原包名:

2020-05-18 13:31:07.695 21604-21604/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2020-05-18 13:31:07.696 21604-21604/? E/Zygote: accessInfo : 1
2020-05-18 13:31:07.701 21604-21604/? I/com.xx.yy: Late-enabling -Xcheck:jni
2020-05-18 13:31:07.741 21604-21604/? I/com.xx.yy: report jit thread pid = 21609
2020-05-18 13:31:07.835 21604-21604/com.xx.yy W/ActivityThread: Application com.xx.yy can be debugged on port 8100...
2020-05-18 13:31:07.842 21604-21604/com.xx.yy I/com.xx.yy: The ClassLoaderContext is a special shared library.
2020-05-18 13:31:08.252 21604-21604/com.xx.yy W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@b9352ba
2020-05-18 13:31:08.378 21604-21604/com.xx.yy I/DecorView: createDecorCaptionView >> DecorView@4039d47[], isFloating: false, isApplication: true, hasWindowDecorCaption: false, hasWindowControllerCallback: true
2020-05-18 13:31:08.418 21604-21604/com.xx.yy D/OpenGLRenderer: Skia GL Pipeline
2020-05-18 13:31:08.632 21604-21604/com.xx.yy D/EmergencyMode: [EmergencyManager] android createPackageContext successful
2020-05-18 13:31:08.655 21604-21604/com.xx.yy D/InputTransport: Input channel constructed: fd=60
2020-05-18 13:31:08.656 21604-21604/com.xx.yy D/ViewRootImpl@34e19e6[MainStub]: setView = DecorView@4039d47[MainStub] TM=true MM=false
2020-05-18 13:31:08.669 21604-21604/com.xx.yy V/InputMethodManager: Not IME target window, ignoring
2020-05-18 13:31:08.672 21604-21637/com.xx.yy D/App: [EDT] 0:0:0,2 - Codename One revisions: 7dd4e7d08b3442d90959477ee52a5ae8c4361b29
2020-05-18 13:31:08.678 21604-21637/com.xx.yy D/App: [EDT] 0:0:0,9 - package com.xx.yy
2020-05-18 13:31:08.693 21604-21637/com.xx.yy D/App: [EDT] 0:0:0,20 - Native Logs Reader initialized correctly
2020-05-18 13:31:08.703 21604-21604/com.xx.yy D/ViewRootImpl@34e19e6[MainStub]: Relayout returned: old=[0,0][1200,1920] new=[0,0][900,1440] result=0x7 surface={true 3890690048} changed=true

请注意‘new=[0,0][900,1440]’。

b)测试包名称:

...(similar)...
2020-05-18 16:26:40.564 24283-24283/com.xx.yy2 D/ViewRootImpl@34e19e6[MainStub]: Relayout returned: old=[0,0][1200,1920] new=[0,0][1200,1920] result=0x7 surface={true 3890690048} changed=true

请注意‘new=[0,0][1200,1920]’。

编辑3:使用原包名新建测试。初始情况:应用程序以降低的分辨率运行900x1440。

Steps:
1. deinstall app
2. switch off wifi/internet
3. install app (from downloads)
4. optional: switch on wifi/internet
5. run app

结果:APP原生分辨率1200x1920。结论:在安装过程中使用程序包名的联机检查设置了降低的分辨率。

编辑4:CN1 Device Tester应用程序的输出:

Density: DENSITY_HIGH
Platform Name: and
User Agent: Dalvik/2.1.0 (Linux; U; Android 9; SM-T510 Build/PPR1.180610.011)
OS: Android
OS Version: 9
UDID: 01234567890abcde
MSISDN: null
Display Width X Height: 1200X1812
1mm In Pixels: 9.449
Language: en
Locale: US
Currency Symbol: $
Are Mutable Images Fast: false
Can Dial: false
Can Force Orientation: true
Has Camera: true
Badging: false
Desktop: false
Tablet: true
Gaussian Blur Support: true
Get All Contacts Fast: true
Multi Touch: true
PICKER_TYPE_DATE: true
PICKER_TYPE_DATE_AND_TIME: false
PICKER_TYPE_STRINGS: true
PICKER_TYPE_TIME: true
Native Share: true
Native Video Player Controls: true
Notification: true
Open Native Navigation: true
Screen Saver Disable: true
Simulator: false

编辑5:我还查看了在有和没有Internet连接的情况下安装的控制台输出。

1)未连接互联网:

...
2020-05-20 13:51:36.746 28438-28455/? D/GOS:NetworkConnector: getPkgData(), packageName : com.xx.yy
2020-05-20 13:51:36.808 28438-28455/? D/GOS:NetworkConnector: getPkgData(), request: https://service.game-mode.net/gamemode/v3/packages/?type=install&device_name=gta3xlwifi&package_names=com.xx.yy, response: null
2020-05-20 13:51:36.830 28438-28455/? D/GOS:PackageDAO: updateTimeStamp(): com.xx.yy
2020-05-20 13:51:36.874 28438-28455/? D/GOS:SystemEventReactor: addPkgDataFromServer(), A package was added : com.xx.yy as undefined
...

请注意"com.xx.yy为未定义的"。

2)带互联网连接:

...
2020-05-20 13:36:31.944 23382-23415/? D/GOS:NetworkConnector: getPkgData(), packageName : com.xx.yy
2020-05-20 13:36:32.254 23382-23415/? D/GOS:NetworkConnector: doDirectly(), Response, responseCode: 200, URL: https://service.game-mode.net/gamemode/v3/packages/?type=install&device_name=gta3xlwifi&package_names=com.xx.yy, response: {"code":"201001","message":"Success","packages":[{"package_name":"com.xx.yy","category_code":"game","game_genre":"BOARD","device_group":"gta3xl","game_oracle_cache":true,"cache":true}]}
2020-05-20 13:36:32.254 23382-23415/? D/GOS:NetworkConnector: getPkgData(), request: https://service.game-mode.net/gamemode/v3/packages/?type=install&device_name=gta3xlwifi&package_names=com.xx.yy, response: {"code":"201001","message":"Success","packages":[{"package_name":"com.xx.yy","category_code":"game","game_genre":"BOARD","device_group":"gta3xl","game_oracle_cache":true,"cache":true}]}
...
2020-05-20 13:36:32.379 23382-23415/? D/GOS:SystemEventReactor: addPkgDataFromServer(), A package was added : com.xx.yy as game
...

请将"com.xx.yy"记为游戏"。

因此有一个将包名称作为参数的https://service.game-mode.net请求。这将我带到了以下链接:

Display density and size reduced by Samsung Game Optimization

Galaxy Note 5: Density Reduced Automatically

总而言之,有一个在线注册的应用程序(包名),是在安装过程中查询的。这可能会导致应用程序的分辨率降低。唯一已知的解决方案--三星游戏调谐器应用已不复存在。

由于注册是三星所有的,我问他们是否可以更改我的应用程序的状态。(这是一款CPU使用率很高但图形很少的游戏AI-当然,我还是想要高分辨率的图形。)

推荐答案

导致此问题的原因是在三星设备上安装时在线检查https://service.game-mode.net(参数:包名)。
这可能会导致默认分辨率发生变化,例如,如果应用程序被称为"游戏"(我的应用程序是棋类游戏)。
这可以由用户使用诸如Game Launcher的游戏性能调节服务来改变。
这一功能适用于所有三星手机和大多数三星平板电脑。
但碰巧不是我的平板电脑,三星Galaxy Tab A 10.1 2019(SM-T510)。
联系三星开发支持后,他们更改了此设备类型的设置,现在我的应用程序以本机分辨率运行。

好了关于代号为One应用程序以较低分辨率运行(Android)的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。