You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyDroid开发时如何获取Android设备屏幕分辨率

问题根因

win32api、ctypes调用Windows系统接口的方案仅适配Windows平台,Android基于Linux内核,无Windows原生API层,两类方案在Android设备上必然无法正常运行。

PyDroid环境下可直接使用的实现方案

方案1:调用Android原生API(准确率最高,全设备适配)

PyDroid默认内置Pyjnius依赖,可直接调用Android原生系统接口获取物理屏幕真实分辨率,不受应用窗口缩放、系统导航栏显示状态影响:

from jnius import autoclass

# 加载Android原生类
Resources = autoclass('android.content.res.Resources')
current_activity = autoclass('org.kivy.android.PythonActivity').mActivity

# 读取屏幕度量参数
display_metrics = Resources.getSystem().getDisplayMetrics()
width_px = display_metrics.widthPixels
height_px = display_metrics.heightPixels
dpi = display_metrics.densityDpi

print(f"设备物理屏幕分辨率:{width_px} × {height_px},屏幕DPI:{dpi}")

若运行提示找不到pyjnius模块,直接在PyDroid内置的包管理面板搜索pyjnius安装即可,无需额外配置安卓开发环境。

方案2:读取系统配置文件(零额外依赖)

不需要安装第三方库的轻量方案,直接读取Android系统显示节点的配置信息:

def get_screen_res():
    with open('/sys/class/graphics/fb0/modes', 'r') as f:
        mode_config = f.readline().strip()
        res_segment = mode_config.split(':')[1].split('p-')[0]
        width, height = map(int, res_segment.split('x'))
        return width, height

w, h = get_screen_res()
print(f"设备屏幕分辨率:{w} × {h}")
  • 该方案需要应用拥有系统文件读取权限,部分深度定制ROM可能修改默认显示节点路径,稳定性弱于方案1。

方案3:Kivy窗口接口(适配Kivy开发的GUI应用)

如果是基于Kivy框架在PyDroid上开发GUI应用,可直接调用Kivy内置接口获取当前窗口尺寸:

from kivy.core.window import Window

win_width = Window.width
win_height = Window.height
  • 注意:该接口返回的是应用当前可用窗口的尺寸,在虚拟导航栏切换显示状态、全面屏手势模式下返回值会动态变化,不是设备物理屏幕的固定分辨率。

内容的提问来源于stack exchange,提问作者ed.vcnt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:06:31