如何在python/kivy/pyjnius上检测Android的屏幕分辨率?

2024-10-03 02:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要知道使用Kivy在Python中创建的应用程序的屏幕分辨率(以像素为单位)。具体问题与Android有关。不幸的是,Kivy本身不想将从GL获得的信息传输给用户,所以我不得不使用变通方法。根据pyjnius manualDisplayMetrics manual的说法,在Android下是pyjnius,我试过以下代码:

from kivy.app import App
from kivy.uix.button import Button
from kivy.utils import platform
from kivy.core.window import Window
from kivy.graphics import Canvas, Rectangle, Color

myheight=-100
mywidth=-100
myDPI=-100
gDPI=-100
Window.fullsceen = True

if platform == 'android':
    from jnius import autoclass
    DisplayMetrics = autoclass('android.util.DisplayMetrics')
    metrics = DisplayMetrics()
    gDPI=metrics.getDeviceDensity()
    myheight = metrics.heightPixels
    mywidth = metrics.widthPixels
    myDPI = metrics.densityDpi

class MainApp(App):
  def build(self):
    b = Button(text="Height: "+ str(myheight) + "\nWidth: " + str(mywidth) + "\nDPI: " + str(myDPI) + "\ngetDPI: " + str(gDPI)
+ '\nWindow.size:' + str(Window.size), color = [0,0,0,1])
    with b.canvas:
       Color(0,1,1, .2)
       Rectangle(size = Window.size, pos = (0,0))
    return b

MainApp().run()

但在结果中,我得到了所有三个值=0,窗口大小=800px,与platfrom无关。Pyjnius手动使用DisplayMetrics方法中未记录的getDeviceDensity()方法。有没有其他方法可以在android下检测kivy的屏幕分辨率?我是否可以直接调用SDL2来检测屏幕分辨率以及必须在哪里正确执行? 随附屏幕截图(按要求)。enter image description here

提前谢谢


Tags: fromimportsize屏幕分辨率windowmetricsandroid
1条回答
网友
1楼 · 发布于 2024-10-03 02:39:05

Kivy itself unfortunately doesn't want to transfer information obtained from GL to user

我不确定你的意思,kivy.core.window.Window.size应该给出gl显示大小。当然,这与您要求的屏幕分辨率不同——我不确定这对您是否重要

But in the result I have all three values = 0

这似乎是出于this question中所述的原因

相关问题 更多 >