次のコードを使用しました。
HID USB/Bluetooth デバイスが Cocoa に接続されていることを知る方法は?
それを私のjniライブラリに追加しました。通知メソッドが呼び出されることはありません。
次に、小さなアプリでコードをテストしました(Java /ほとんどCコードなし)。私はすべてうまくいきます。
私の推測では、Java が通知の実行を妨げていると思われます。
私ができることについてのアイデアはありますか?
次のコードを使用しました。
HID USB/Bluetooth デバイスが Cocoa に接続されていることを知る方法は?
それを私のjniライブラリに追加しました。通知メソッドが呼び出されることはありません。
次に、小さなアプリでコードをテストしました(Java /ほとんどCコードなし)。私はすべてうまくいきます。
私の推測では、Java が通知の実行を妨げていると思われます。
私ができることについてのアイデアはありますか?
これは、Java/JNI 環境で実行ループが実行されていないためだと思います。
javahidapiがどのように実装されているかを見てみましょう。具体的には、別のスレッドを作成して run を実行し、終了/キャンセル ステータスが返されるまでhid_runloop_thread()
呼び出します。CFRunLoopRunInMode()
CFRunLoopAddSource ()
実行ループはスレッド固有であるため、 を呼び出す前に同じスレッドからと をIOServiceAddMatchingNotification()
呼び出す必要があることに注意してくださいCFRunLoopRunInMode()
。