在JNI(OSX)中添加USB(添加/删除)通知 - 失败

时间:2012-12-04 17:41:40

标签: macos notifications java-native-interface usb

我使用了以下代码:

How to know when a HID USB/Bluetooth device is connected in Cocoa?

并将其添加到我的jni库中。通知方法永远不会被调用。

然后我在一个小应用程序中测试了代码(没有java /主要是C代码)。我工作得很好。

我的猜测是Java阻止了通知发生。

关于我能做什么的任何想法?

1 个答案:

答案 0 :(得分:0)

我相信这是因为在Java / JNI环境中没有运行运行循环。

查看javahidapi如何实现,具体说明如何创建一个单独的线程来运行hid_runloop_thread(),然后调用CFRunLoopRunInMode()直到它返回完成/取消状态。

请注意,运行循环是特定于线程的,因此您需要在调用CFRunLoopAddSource ()之前从同一个线程执行IOServiceAddMatchingNotification()CFRunLoopRunInMode()调用。