我创建了一个与zigbee设备通信的系统服务。更新了API并在设备上创建了system.img并进行了刷新,并为android编程制作了自定义SDK。
在Mainactivity类中,
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”字样的错误。当我把光标放在它上面时,它说“必须是:所有系统服务的列表”之一。 使用其他系统服务工作。此外,与其他系统服务一样,Context.class文件中也提供了Zigbee服务。
...
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错误。或者在Context中正确添加Zigbee服务。
我用这个作为参考。 https://github.com/nayobix/add-new-hardware-hal-android-5-lollipop
答案 0 :(得分:1)
当注册框架内的系统服务时(假设您已经构建了服务),您需要做的不仅仅是添加服务的String
名称,还需要执行下一个步骤进行:
AIDL
添加到frameworks/base/core/java/android/os/
。frameworks/base/Android.mk
内的构建中。您可以在this精彩文章中看到更多信息。