自定义系统服务上下文错误

Context error of custom system service

我创建了一个与 zigbee 设备通信的系统服务。更新了 API 并创建了 system.img 并在设备上闪烁,并为 android 编程制作了自定义 SDK。

在主要活动中 class、

try {
        ZigbeeManager zm = (ZigbeeManager) getSystemService(Context.ZIGBEE_SERVICE);
        zm.write("Hello World!\r");
    } catch (Exception ex) {
        Log.d(TAG, "Error in Zigbee Service: " + ex.toString());
    }

我在单词 "Context.ZIGBEE_SERVICE" 上遇到错误。当我将光标放在它上面时,它显示 "Must be one of : list of all system services"。 使用其他系统服务有效。 Zigbee 服务也可以在 Context.class 文件中使用,就像其他系统服务一样。

...
public static final String WIFI_SERVICE = "wifi";
public static final String WINDOW_SERVICE = "window";
public static final String ZIGBEE_SERVICE = "zigbee";

现在 运行 它在设备上。我在 logcat.

上收到此错误消息
01-01 12:09:24.126 6874-6874/com.jcxmej.uartcontrol D/UARTControl: Error in Zigbee Service: java.lang.NullPointerException: Attempt to invoke interface method 'int android.os.IZigbeeService.write(java.lang.String)' on a null object reference

对象为空。是否需要初始化,但如何初始化?但我认为它是 Null 因为上下文没有正确链接。如何摆脱上下文错误。或者在Context中适当添加Zigbee服务。

我以此为参考。 https://github.com/nayobix/add-new-hardware-hal-android-5-lollipop

在框架内注册一个系统服务时(假设您已经构建了该服务)您需要做的不仅仅是添加服务的String名称,您需要执行后续步骤:

  1. SystemServer.java 中注册您的服务(挖掘代码并将其添加到 try/catch 所有服务列表)。
  2. 将您的 AIDL 添加到 frameworks/base/core/java/android/os/
  3. 将您的服务文件名添加到构建内部 frameworks/base/Android.mk .

您可以在 this 很棒的文章中查看更多信息。