마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 펌웨어에서 앱이 해상도를 가져오는 방식 질문드립니다.

0 추천

안녕하세요. 중소기업 full hd TV를 구매하고

adb 두들겨서 나온 정보에 1080 이라고는 찾아볼수가 없고 build.prop 쪽에서만 1080p를 확인할수 있어서 

720p로 제한된 TV라고 논쟁중인데 안드로이드 어플리케이션에서 해상도 정보를 가져오는 방식에 대해 질문 드리려고합니다.

 

개발과 관련된 일을 하고있진 않지만 IT쪽에 관심이 많아서.. 확실하게 알고싶어서 질문드립니다.

제가 잘 학습한 것이 맞다면 dumpsys로 불러오는 정보는 커널단이고

build.prop에서 불러오는 정보는 OS단이라고 배웠습니다.

 

redwood:/ $ wm size
Physical size: 1280x720
 
redwood:/ $ dumpsys display | grep mBaseDisplayInfo
    mBaseDisplayInfo=DisplayInfo{"Built-in Screen", displayId 0, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 1280 x 720, largest app 1280 x 720, smallest app 1280 x 720, appVsyncOff 1000000, presDeadline 16666666, mode 1, defaultMode 1, modes [{id=1, width=1280, height=720, fps=60.000004}, {id=2, width=1280, height=720, fps=50.0}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[2, 3], mMaxLuminance=500.0, mMaxAverageLuminance=500.0, mMinLuminance=0.0}, minimalPostProcessingSupported true, rotation 0, state ON, type INTERNAL, uniqueId "local:0", app 1280 x 720, density 213 (36.7 x 36.7) dpi, layerStack 0, colorMode 0, supportedColorModes [0], address {port=0}, deviceProductInfo null, removeMode 0}
redwood:/ $

Dumpsys로 불러온 정보고요. 여기서 modes 정보에서는 어느곳에서도 1080p를 찾을 수 없으며,

wm size 도 physical 720p로 되어있습니다.

 

[sys.display-size]: [1920x1080]
[vendor.display-size]: [1920x1080]

이게 build.prop에서 가져온 정보입니다.

의미없지만 Aida나 hw info 같은앱을 확인해도 역시나 ADB로 확인한 정보와 일치하구요.

 

업체는 유튜브 같은앱을 보면 자동설정으로 1080p까지 올리가면 그게 1080p 인거다 이런식으로 말을해서요

720p로 표기되는 앱이 있다면 해상도를 결정하는건 앱이니까 앱에가서 따지라면서 말을 뚝 잘라버립니다.

 

1080p로 제대로 재생되고 있다면, 앱 UI와 동영상 플레이어는 별도의 레이어를 가지며 

UI만 720->1080로 업스케일링 되어야 하는건데요. 이게 안드로이드에서는 가능한건가요?

 

다른 개발자분들에게 물어보면 1080로 만들어진 영상이 720로 다운스케일되고 다시 1080으로 업스케일이 된다고 하는데요. 

비디오가 렌더되는 방식을 로그로 딸 수 있는 방법이 있으면 좋겠지만 없다면 다른 방법으로 검증할수 있을까요?

업체측 말대로 앱이 잘못만들어진것일까 해서 문제를 최초로 발견하게된 앱 개발팀에 물어보니 이 두가지 방식으로 해상도를 체크하고

리턴한다고 하는데요. 한번더 검증하고 업체에 잘 알려드리려고합니다... 

Display  |  Android Developers

core/core/src/main/java/androidx/core/view/DisplayCompat.java - platform/frameworks/support - Git at Google (googlesource.com)

public Mode[] getSupportedModes ()
public static ModeCompat[] getSupportedModes(
                    @NonNull Context context, @NonNull Display display)

 

저는 1080p 이미지에 도트 찍어서 픽셀매칭이 되는지 안되는지 무식한 방법으로 검증하려 했는데

참.. 힘들어더군요 ㅠㅠ 그래서 여기서 확실한 방법을 알고싶어서 질문드렸습니다.

잡초같은사람 (120 포인트) 님이 2023년 3월 2일 질문

1개의 답변

0 추천
앱에서 디스플레이 정보를 구할 때는 흔히
https://developer.android.com/reference/android/util/DisplayMetrics 를 사용합니다.
안드로이드앱은 직접적으로 픽셀을 다루기 보다는display independent pixel이라고 해서 독립적인 단위를 사용합니다. 초창기에 출시됐던 디바이스를 1로 잡고 여기에 상대비율을 주어서 사용을 계산된 값입니다.
제가 그쪽 전문가가 아니라서 간략한 답만 달았습니다.
spark (227,470 포인트) 님이 2023년 3월 2일 답변
...