如何在Kivy中检测Android屏幕旋转?

4

我一直在寻找一种Kivy解决方案,可以捕捉Android设备从一种方向到另一种方向的旋转。我尝试了下面两种窗口方法,但是当我旋转设备时,都没有执行on_rotaterotate_screen例程。我看到Java中有一个onConfigurationChanged事件,但我找不到Kivy处理相同事件的方式。

    Window.on_rotate(self.on_rotate)
    Window.bind(on_rotate=self.rotate_screen)        

在logcat中我得到了以下信息,表明设备已经旋转,但我的应用程序从未看到这些事件。

I/InputReader(270): Reconfiguring input devices.  changes=0x00000004
I/InputReader(270): Device reconfigured: id=3, name='ilitek_i2c', surface size is now 1280x800, mode is 1
I/ActivityManager(270): Config changed: {1.0 0mcc0mnc en_US sw800dp w1280dp h752dp xlrg land finger -keyb/v/h -nav/h s.8}
1个回答

1

我认为on_rotate只跟踪Kivy内部的旋转(这是在OpenGL中完成的,与Android层的旋转无关)。

您可以使用pyjnius来使用正常的Java方法进行操作,但我不知道详细信息。一个可能同样有效的简单解决方案是监视Window.size(从kivy.core.window导入Window) - 这应该检测到从纵向到横向的更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接