小编Mig*_*uel的帖子

Android 中使用 kivy 的前台服务

我正在尝试使用 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 我想要执行前台服务。如果有人知道并分享其他更好的形式来做到这一点,我将不胜感激。

android kivy buildozer

6
推荐指数
0
解决办法
1192
查看次数

标签 统计

android ×1

buildozer ×1

kivy ×1