我正在尝试使用 kivy 在 Android 中执行前台服务。
我已经按照互联网上的不同示例创建了一个服务,但是在进入睡眠状态(打瞌睡模式)几分钟后,甚至当我更改为另一个应用程序时,所有这些服务都会被 Android 杀死。
我尝试了几个例子并尝试了不同的选择,但几分钟后没有人活着。
其中我尝试过
https://python-for-android.readthedocs.io/en/latest/services/
https://github.com/tshirtman/kivy_service_osc
https://github.com/kivy/kivy/wiki/Background-Service-using-P4A-android.service
如何在Android中保持kivy服务在后台运行(切换到其他应用程序或锁定屏幕时服务仍然运行)?
看来,由于应用程序生成的 Android Oreo 服务一旦被终止,就会被终止。如果您想在后台运行服务,则需要向用户显示持续通知,告诉他们您的应用程序正在后台运行。但我不知道如何在基维中做到这一点。
如果有人可以帮助我或展示如何做到这一点的示例,我将不胜感激。
提前致谢
编辑:我目前的解决方案,以防万一它可以帮助某人。
最后,我已经能够使用 kivy 启动前台服务(因此当手机进入睡眠状态或当您使用其他应用程序时它不会被 Android 杀死),但我必须编辑 buildozer 结构的一个文件。
我已使用https://github.com/tshirtman/kivy_service_osc中的示例来创建我执行的 apk
buildozer -v android debug deploy run logcat
Run Code Online (Sandbox Code Playgroud)
然后我已经编辑.buildozer/android/platform/build-armeabi-v7a/dists/oscservice__armeabi-v7a/templates/Service.tmpl.java(服务脚本在service.y文件中)并且我已经更改
intent.putExtra("serviceStartAsForeground", "{{ foreground|lower }}");
Run Code Online (Sandbox Code Playgroud)
经过
intent.putExtra("serviceStartAsForeground", "true");
Run Code Online (Sandbox Code Playgroud)
然后我又执行了
buildozer -v android debug deploy run logcat
Run Code Online (Sandbox Code Playgroud)
我还没有找到任何其他方法来告诉 kivy 我想要执行前台服务。如果有人知道并分享其他更好的形式来做到这一点,我将不胜感激。