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

如何在python/kivy/pyjnius上检测Android的屏幕分辨率?,python,android,kivy,pyjnius,Python,Android,Kivy,Pyjnius,我需要知道使用Kivy在Python中创建的应用程序的屏幕分辨率(以像素为单位)。具体问题与Android有关。不幸的是,Kivy本身不想将从GL获得的信息传输给用户,所以我不得不使用变通方法。在安卓系统下,它是pyjnius,据我所知,我尝试了以下代码: from kivy.app import App from kivy.uix.button import Button from kivy.utils import platform from kivy.core.window import

我需要知道使用Kivy在Python中创建的应用程序的屏幕分辨率(以像素为单位)。具体问题与Android有关。不幸的是,Kivy本身不想将从GL获得的信息传输给用户,所以我不得不使用变通方法。在安卓系统下,它是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来检测屏幕分辨率以及必须在哪里正确执行? 随附屏幕截图(按要求)

提前谢谢

不幸的是,Kivy本身不想将从GL获得的信息传递给用户

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

但是在结果中,我有三个值=0


这似乎是因为中所述的原因,例如。

我确实尝试过,但Kivy window size的尺寸为800像素。我需要知道本机解决方案。至于第二个变量-我应该如何在pyjnius中使用getWindowManager().getDefaultDisplay().getMetrics(metrics)?Kivy窗口大小应该以像素表示可绘制的窗口大小。如果没有,那就是一个错误。你能用pos(0,0)和size Window.size绘制一个矩形,然后发布一个屏幕截图,显示它没有填满屏幕吗?对于pyjnius部分,我链接的方法应该可以在pyjnius中使用。sceenshot是在linux上的,但问题是关于Android的?至于pyjnius:logcat:python:[信息][窗口]不允许使用虚拟键盘,单模,未对接python:Traceback(最近一次调用最后一次):python:File“/home/osboxes/KivyHelloWorld/.buildozer/android/app/main.py”,第17行,python:NameError:name'getWindowManager'未定义python:android版python已结束。