Java アプリケーションを特定の Bluetooth デバイスに接続できません。デバイスはセルフビルドで、正常に動作します。これまで、私のアプリケーションはデバイスへのシリアル ポート接続を使用していましたが、これは完全に機能していました。それについての悪い点は、デバイスがどの COM ポートに接続されているかを自動的に検出できなかったことです。そのため、ユーザーはデバイス マネージャーでそれを調べて、手動で配置する必要がありました。数週間後、同じデバイスに接続する Android アプリをプログラムしました。これは直接の bluetooth 接続を使用し、すべてが非常にうまく機能したので、bluecove ライブラリを使用してデスクトップ アプリケーションでこれを試してみたいと思いました (単純に、無料であり、必要なもののように思えたからです)。
デバイスを検出し、サービスを検出し、そのサービスから URL を取得できます。ここまでは問題ありませんが、Web で見つけたいくつかの例に従って接続を開こうとするとConnector.open(url)
、コードの一部で常に BluetoothConnectionException が発生します。
String url = service.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
// url = "btspp://001203280265:1;authenticate=false;encrypt=false;master=false";
StreamConnection conn = (StreamConnection) Connector.open(url);
例外は次のとおりです。
javax.bluetooth.BluetoothConnectionException: Failed to connect; [10051] Ein Socketvorgang bezog sich auf ein nicht verfügbares Netzwerk.
// translation: A socket operation was attempted to an unreachable network. This usually means the local software knows no route to reach the remote host.
at com.intel.bluetooth.BluetoothStackMicrosoft.connect(Native Method)
at com.intel.bluetooth.BluetoothStackMicrosoft.access$700(BluetoothStackMicrosoft.java:44)
at com.intel.bluetooth.BluetoothStackMicrosoft$ConnectThread.run(BluetoothStackMicrosoft.java:651)
この例外が発生する理由と、それを修正する方法がわかりません。(それが、これ以上コードを提供しない理由でもあります。エラーを探す場所がわかりません。)
これは、Bluecove 2.1.1 (63) の最新のスナップショットを持つ Windows 7 64 ビット マシンで実行されています。
この問題をどのように処理できるか考えている場合は、役立つコメントと回答をいただければ幸いです。