0

我使用了以下代码:

如何知道何时在 Cocoa 中连接了 HID USB/蓝牙设备?

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

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

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

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

4

1 回答 1

0

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

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

CFRunLoopAddSource ()请注意,运行循环是特定于线程的,因此您需要IOServiceAddMatchingNotification()在调用CFRunLoopRunInMode().

于 2012-12-04T20:32:34.383 回答