我使用了以下代码:
如何知道何时在 Cocoa 中连接了 HID USB/蓝牙设备?
并将其添加到我的 jni 库中。通知方法永远不会被调用。
然后我在一个小应用程序中测试了代码(没有 java / 主要是 C 代码)。我工作一切都很好。
我的猜测是 Java 正在阻止通知发生。
关于我能做什么的任何想法?
我使用了以下代码:
如何知道何时在 Cocoa 中连接了 HID USB/蓝牙设备?
并将其添加到我的 jni 库中。通知方法永远不会被调用。
然后我在一个小应用程序中测试了代码(没有 java / 主要是 C 代码)。我工作一切都很好。
我的猜测是 Java 正在阻止通知发生。
关于我能做什么的任何想法?
我相信这是因为在 Java/JNI 环境中没有运行运行循环。
看看javahidapi是如何实现的,特别是它如何创建一个单独的线程来运行hid_runloop_thread()
,然后调用CFRunLoopRunInMode()
它直到它返回一个完成/取消状态。
CFRunLoopAddSource ()
请注意,运行循环是特定于线程的,因此您需要IOServiceAddMatchingNotification()
在调用CFRunLoopRunInMode()
.