【问题标题】:How to detect phone lock/unlock in android with KivyMD?如何使用 KivyMD 在 android 中检测手机锁定/解锁?
【发布时间】:2021-06-03 12:01:04
【问题描述】:

我正在尝试做一个应用程序,需要在用户锁定手机时保存一些数据,然后在手机解锁时读取,def on_pausedef on_resume 可以工作吗?

【问题讨论】:

    标签: python android kivy buildozer


    【解决方案1】:

    buildozer.spec 中输入:

    要求 = kivy==2.0.0、jnius、kivymd、android

    android.minapi = 21

    from kivy.lang import Builder
    from kivy.utils import platform
    from kivymd.app import MDApp
    
    if platform == 'android':
        from jnius import autoclass
        PowerManager = autoclass('android.os.PowerManager')
        Context = autoclass("android.content.Context")
        context = autoclass("org.kivy.android.PythonActivity").mActivity
    
    KV = """
    Screen:
        MDLabel:
            id: label
            text: 'Screen states:'
            halign: 'center'
    """
    
    
    class TestApp(MDApp):
        def build(self):
            return Builder.load_string(KV)
    
        def check_is_phone_lock(self):
            if platform == 'android':
                try:
                    powerManager = context.getSystemService(Context.POWER_SERVICE)
                    isScreenOn = powerManager.isInteractive()
                    print(f'isScreenOn: {isScreenOn}')
                    screen_state = 'Off' if isScreenOn is False else 'On'
                    self.root.ids.label.text += f'\nscreen - {screen_state}'
                    return screen_state
                except Exception as err:
                    return str(err)
    
        def on_pause(self):
            self.check_is_phone_lock()
            return True
    
        def on_resume(self):
            self.check_is_phone_lock()
    
    
    TestApp().run()
    

    【讨论】:

    • 谢谢,我会试试这个!
    • 如果有帮助则标记为解决方案
    • 还没试过!当我尝试时会这样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多