我使用了以下代码:
How to know when a HID USB/Bluetooth device is connected in Cocoa?
并将其添加到我的jni库中。通知方法永远不会被调用。
然后我在一个小应用程序中测试了代码(没有java /主要是C代码)。我工作得很好。
我的猜测是Java阻止了通知发生。
关于我能做什么的任何想法?
答案 0 :(得分:0)
我相信这是因为在Java / JNI环境中没有运行运行循环。
查看javahidapi如何实现,具体说明如何创建一个单独的线程来运行hid_runloop_thread()
,然后调用CFRunLoopRunInMode()
直到它返回完成/取消状态。
请注意,运行循环是特定于线程的,因此您需要在调用CFRunLoopAddSource ()
之前从同一个线程执行IOServiceAddMatchingNotification()
和CFRunLoopRunInMode()
调用。