gpt4 book ai didi

java - 启动时启动 Kivy 服务 (Android)

转载 作者:太空狗 更新时间:2023-10-29 20:31:03 25 4
gpt4 key购买 nike

我正在尝试在启动时启动我的 kivy 应用程序的服务。

我确信我的服务没问题,因为它在我启动我的应用程序时有效。但是在启动时我遇到了问题。

我读过 this article并尝试做到:

package net.saband.myapp;

import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import org.kivy.android.PythonActivity;

public class MyBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Intent ix = new Intent(context, PythonActivity.class);
ix.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ix);
}
}

它工作但启动应用程序而不是服务。所以我研究了 StackOverflow 上的一些问题并为此更改了我的代码:

package net.saband.myapp;

import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import net.saband.myapp.ServiceMyservice;

public class MyBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Intent ix = new Intent(context, ServiceMyservice.class);
ix.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(ix);
}
}

... 出现错误:

10-21 19:16:44.784  1513  1569 I ActivityManager: Start proc 6334:net.saband.myapp:service_myservice/u0a116 for service net.saband.myapp/.ServiceMyservice
10-21 19:16:44.786 6334 6334 I art : Late-enabling -Xcheck:jni
10-21 19:16:44.885 6334 6334 D AndroidRuntime: Shutting down VM
10-21 19:16:44.888 6334 6334 E AndroidRuntime: FATAL EXCEPTION: main
10-21 19:16:44.888 6334 6334 E AndroidRuntime: Process: net.saband.myapp:service_myservice, PID: 6334
10-21 19:16:44.888 6334 6334 E AndroidRuntime: Theme: themes:{}
10-21 19:16:44.888 6334 6334 E AndroidRuntime: java.lang.RuntimeException: Unable to start service net.saband.myapp.ServiceMyservice@8c96929 with Intent { cmp=net.saband.myapp/.ServiceMyservice }: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference

能否请您解释一下出了什么问题以及我应该怎么做才能启动该服务?谢谢!

已更新

应@Juggernaut 的要求,我添加了我的服务代码:

from time import sleep

if __name__ == '__main__':
while True:
print "myapp service"
sleep(5)

它在我运行应用程序时有效,因为应用程序调用了服务:

def __start_service(self):
if platform == 'android':
service = autoclass('net.saband.myapp.ServiceMyservice')
mActivity = autoclass('org.kivy.android.PythonActivity').mActivity
argument = ''
service.start(mActivity, argument)

已更新(AndroidManifest)

这是我的 AndroidManifest.xml 中的一些字符串。

  1. 我有 RECEIVE_BOOT_COMPLETED 权限:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

  2. 我有接收器:

    <receiver android:name=".MyBroadcastReceiver" android:enabled="true">
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
    </receiver>

  3. 我已经注册了服务:

    <service android:name="net.saband.myapp.ServiceMyservice"
    android:process=":service_myservice" />

根据@mariachi 的建议,我尝试更改 android:enabled="true" to android:enabled="false"在接收器中添加 android:exported="false"到服务。在这种情况下,当设备启动时什么也没有发生:没有错误,没有服务。

最佳答案

我的天哪!我通过解决 my another issue with kivy service 找到了解决方案.只需添加一些附加功能就足够了。这是工作代码:

package net.saband.myapp;

import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import net.saband.myapp.ServiceMyservice;

public class MyBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String package_root = context.getFilesDir().getAbsolutePath();
String app_root = package_root + "/app";
Intent ix = new Intent(context, ServiceMyservice.class);
ix.putExtra("androidPrivate", package_root);
ix.putExtra("androidArgument", app_root);
ix.putExtra("serviceEntrypoint", "./service/main.py");
ix.putExtra("pythonName", "myservice");
ix.putExtra("pythonHome", app_root);
ix.putExtra("pythonPath", package_root);
ix.putExtra("pythonServiceArgument", app_root+":"+app_root+"/lib");
ix.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(ix);
}
}

关于java - 启动时启动 Kivy 服务 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com