2

Bluetooth バーコード スキャナーに接続する Android アプリの作成に取り組んでいます。これを行う方法のコード例を探していましたが、デバイスへの接続に関する処理が見つかりません。ピアツーピアでAndroidデバイスに接続することはたくさんありますが、Androidからデバイスまではカバーされていないようです。

これは私がこれまでに持っているコードです。接続が拒否されて接続に失敗します。

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
socket = mDevice.createRfcommSocketToServiceRecord(uuid);
socket.connect();

06-11 15:29:10.113: W/System.err(20018): java.io.IOException: Connection refused
06-11 15:29:10.133: W/System.err(20018):    at  android.bluetooth.BluetoothSocket.connectNative(Native Method)
06-11 15:29:10.133: W/System.err(20018):    at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:212)

デバイスは Android フォンとペアリングされており、これを使用して電話から取得します。

Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
4

5 に答える 5

2

この問題の修正を見つけましたが、なぜこれが機能し、もう 1 つが機能しなかったのかはわかりません。

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
socket = mDevice.**createInsecureRfcommSocketToServiceRecord(uuid);**
socket.connect();

Insecure 呼び出しを使用するように変更すると、接続が機能し、ソケット読み取り呼び出しからデータを受け取ることができます。

于 2012-06-12T16:54:38.233 に答える
1

この ID は、バーコード スキャナが標準の Bluetooth SPP インターフェイスを提供する場合にのみ機能します。このデバイスがその UUID を使用していると確信していますか?

このスキャナを何か (PC だけでも) に接続するためのドキュメントを探してください。そして、たとえそれがあなたが今やろうとしていることでなくても、それを経験してください. システムについて何かを学んだり、システムが実際にどのように機能するかについてのアイデアを得ることができます。

たとえば、PC に何かを実行させるための特別なドライバー インストールが存在する場合、それは SPP プロファイルではないことを示します。あるいは、「シリアル ポート」に接続して動作するスキャナを操作するための PC アプリケーションがある場合、それは間違いなく SPP プロファイルです。

SPP プロファイルではない場合、PC などへの接続が機能していれば、少なくとも接続を傍受し、場合によってはデータ転送を行って、Android 向けに何かをリバース エンジニアリングする機会が得られます。

また、ハードウェアが 1 つの特定のアプリケーションで機能することをベースライン チェックすることで、ハードウェア障害を除外できます。(Android デバイスの Bluetooth リンクを確認してください!)

于 2012-06-12T02:37:28.550 に答える
0

別の可能性 - 前回とは大きく異なるため、2 番目の回答として投稿します。

これまでのところ、技術的に行う予定の情報のみを提供しており、作成しようとしているアプリの実際の目的については説明していません。

アプリの目的が Bluetooth 接続の演習や特定のバーコード リーダーの使用だけではなく、Android デバイスにバーコード値を取得することが、より大きな目的の 1 つのステップにすぎない場合、デバイスのカメラを使用することを検討しましたか?バーコードリーダーの代わりにその仕事?

これを処理できるライブラリがあるか、独自の画像処理コードを DIY するのが楽しいかもしれません (既にそれを行う既存のアプリがあることを知っているので、何らかの方法で可能です)。

于 2012-06-12T08:07:11.213 に答える
0

私は同じ問題を抱えていて、それを解決しました。まず、バーコード スキャナー モードを HID から SSP に変更します。HID (Human Interface Mode) は、ハードウェア キーボード モード専用です。

次に、Bluetooth ハードウェアを入力デバイスからオフにします。設定 > Bluetooth > Bluetooth バーコード キャンナー設定 > 入力デバイスのチェックを外す

UUID を使用 UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")

それでおしまい。

于 2015-02-05T09:25:20.860 に答える
0

createInsecureRfcommSocketToServiceRecordは大きなヒントでした。

Bluegiga WT32-A Bluetooth モジュールへの接続に問題がありました。私の古いコードは、Bluetooth チャットの例 (BTM 222 Bluetooth モジュールで正常に動作) に基づいておりcreateRfcommSocketToServiceRecord、接続が拒否された結果、 を使用していました。

java.io.IOException: Connection refused

奇妙なことに、短い間隔で何度も何度も接続しようとするとcreateRfcommSocketToServiceRecord、うまくいくことがありました。

注意すべきもう 1 つの点: を使用するにcreateInsecureRfcommSocketToServiceRecordは、API レベル 10 が必要です。

于 2013-01-15T17:44:51.440 に答える