問題タブ [rfcomm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
998 参照

testing - SPP-RFCOMMテスト用のADBコマンド

Android2.3.3電話でBluetoothプロトコルテストを実施しています。USBデバッグモードのデバイスをWindows7PCに接続し、cmdを使用してデバイスにコマンドを実行しています。

問題:SDPクエリを送信する方法がわかりません。シーン、テストケースを設定しましょう:「IUTがテスターのエミュレートされたシリアルポートへの接続を確立していることを確認します。IUTはDevAとしての役割を担うデバイスです。テスターはアクセプターです」...nbテスターは、Androidデバイス(IUT)が通信する必要のあるテストマシンです。

最初のステップは、私が行き詰まっているところです。「SDPを使用してクエリを送信し、リモートデバイス内の目的のアプリケーションのRFCOMMサーバーチャネル番号を見つけます。これには、ユーザーが使用可能なポートから選択できるようにするブラウジング機能が含まれる場合があります(または、ピアデバイス内のサービス)。または、接続するサービスが正確にわかっている場合は、目的のサービスに関連付けられているサービスクラスIDを使用して必要なパラメータを検索するだけで十分です。」

デバイス:ストック-デバイスをルート化する方法がわかりません笑!オーバークロックされていません。Bluetooth2.1バージョン1.0.46.0

これまで私は以下を試しました。adbシェルrctest-u[テストマシンのBTアドレス]を入力すると、テストケースを実行しているかどうかに関係なく、「接続できません、現在進行中です」または「ホストに接続できません」と表示されることがあります。また試してみました:rctest -u [テストマシンのBTアドレス]チャネル10で無期限に待機します:S sdptest -i B:SDPサービスに接続できません:ホストがダウンしています

私は私がそれ以上進むことを妨げている何か大きなものを見逃していると思います。

どんな助けでも大歓迎です。ダン

0 投票する
2 に答える
4077 参照

android - Android Bluetooth IOException: 接続が拒否されました

よし、契約だ。Bluetoothが有効になっている2台のGalaxy Nexus電話を入手しました。

デバイスの検出と接続に使用する bluetooth 接続管理アプリを作成しました。また、デバイスがサポートできる利用可能なすべての UUID も出力します。

http://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htmを見ると、次の標準 UUID が Galaxy Nexus デバイスから公開されています。

  • 0x1116 - 昼寝
  • 0x112f - PBAP (電話帳アクセス プロファイル)
  • 0x111f - HFP (ハンズフリー)
  • 0x1105 - OPP (オブジェクト プッシュ プロファイル)
  • 0x1112 - HSP (ヘッドセット プロファイル)
  • 0x110c - AVRCP
  • 0x110a - A2DP

OPP プロファイル ( ) を介して接続しUUID 00001105-0000-1000-8000-00805F9B34FB、デバイス間でオブジェクト (ファイル) をプッシュしようとしています。すべてのBluetooth接続を検出、ペアリング/結合(スレッド化など)、および管理する方法について、 Android APIドキュメント全体を調べました。SPP (0x1101) プロファイルを介してレガシー ボード デバイスに正常に接続し、通信することができました。

ただし、socket.connect()2 台の Galaxy nexus フォン間で使用しようとすると、ペアリング ダイアログが表示さPairれ、両方のデバイスでボタンをクリックします。その後、すぐにConnection Refused IOException. 安全なリンクがキャッシュされているため、一度ペアリングが行われた後は二度と尋ねられないことに注意してください。

これらの標準 UUID を使用してこれらの標準プロファイルに接続できない場合、それらが公開されるのはなぜですか? アプリからこれらのプロファイルに接続して操作するにはどうすればよいですか? 私のアプリが何らかの形で信頼されていないからですか? 奇妙なのは、Android の機能でさえShareまったく機能しないことです。これは Android で完全に壊れているものですか?

ドキュメントにあるように、「よく知られている UUID SPP 1 0x1101」を使用するためのヒントを与えないようにしてください。これは私が望むものではありません。私はこれがどのように機能するかについてかなりよく理解しており、問題の実際の解決策または説明を探しています。

典型的な「リフレクション」ソリューションを見てきましたが、なぜこれがまだ Android で問題なのか理解できませんか? なぜ人々はこれを機能させるためにリフレクションを使用するのでしょうか? これを修正するために Android のバグを報告できますか?

これらの UUID が標準である場合、どのアプリもそれらに接続して対話できるはずです。これが問題になる理由と、この例外が発生する理由を教えてください。

前もって感謝します。

アップデート

そのため、何らかの理由で Android システムのオブジェクト プッシュが機能し始めました。実際にアプリ経由で接続しようとしましたが、機能しませんでした。次に、連絡先アプリに行き、魔法のように機能する連絡先を共有しようとしました. その後、自分のアプリに戻ったところ、今では機能しています...うわー。それは非常に奇妙であり、これには説明が必要です。

0 投票する
0 に答える
748 参照

python - Python: ソケットを /dev/rfcommX にバインドする

シリアル ポート経由で組み込みデバイスにファームウェアをロードするスクリプトがあります。このスクリプトは、シリアル ポートの /dev/xxx アドレスを引数として受け取ります。Bluetooth経由でこれを行う特別なセットアップがあります。Bluetooth経由でPythonのモジュールに接続できました。ただし、/dev/rfcomm0 のようなシリアル デバイスにローカル ソケットを登録する方法に関する例/情報が見つかりません。

ここで、server_sock を /dev/rfcomm0 に登録する方法が必要です

0 投票する
0 に答える
375 参照

android - android.server.BluetoothService.java を変更して、ペアリングされたデバイスのキャッシュされた service_channel_no を更新し、(複数のチャネルで) 複数の接続を開きます。

Android Phone (Samsung Galaxy) が、ペアリングされたデバイスである PC (サーバー) への 2 つ (またはそれ以上) の接続を開く必要がある場所で立ち往生しています。この目的のために、UUID : 00001101-0000-1000-8000-00805F9B34FB とチャネル 2 を使用して PC で SDP サーバーを起動します。最初の接続後、PC で SDP サービスを登録解除し、チャネル 3 (および同じ UUID) で再度登録します。 2番目のBluetooth接続を確立するために、Androidフォンがそれに「接続」することを期待しています。2 つ目は失敗します。

私が理解した問題は、ペアリングのために、「BluetoothSocket.connect」のデバイスのチャネル番号とUUIDがキャッシュから提供され、更新されていないため、サーバー側のチャネル番号でSDPが変更されることですチャネル 2 (古いチャネル) に接続しようとしているため、ここには表示されません。

この問題の回避策 (多くのイライラする試みの後に発見された) は、getRemoteServiceChannel() および fetchRemoteUuids() に戻る前に updateDeviceServiceChannelCache(addr) を導入して android.server.BluetoothService.java ファイルを変更し、更新することです。各関数呼び出しのチャネル番号。

上記の解決策は間違っている可能性があります。その点はご容赦ください。それが正しい場合は、さらなる変更と、この変更をEclipseで永続的にする方法を提案してください。または、他の場合(間違った解決策)、これを行う正しい方法を提案してください。

注:私はAndroid 2.3.5を使用しており、デバイスからのリクエストは実際にはPCに転送するブラウザからのものです。私はそれらを別々のチャンネルにしたい。

ありがとう。

0 投票する
8 に答える
9352 参照

android - Android 4.2 で Bluetooth RFCOMM 接続を連続して確立できませんでした

Bluetooth 経由で RFCOMM を介してカスタム デバイスと通信するアプリケーションがあります。通信コードは、BluetoothTalk サンプル プロジェクトに基づいています。以前は、Galaxy S3、Galaxy S2、Galaxy Note、Nexus 7 のいずれでも問題なく動作していました。

最近、Nexus 7 が Android 4.2 にアップグレードされて以来、問題は次のように発生します。

  1. アプリを使用して初めて接続をセットアップするとき、つまり、デバイスの電源を入れてアプリを起動したばかりの場合、問題なく、正常にデータを取得できます。

  2. その後、通信を停止して再起動しようとすると、「java.io.IOException: bt socket closed, read return: -1」というエラーで通信が失敗します。それ以降、何度再接続しようとしても、常に失敗します。

  3. 再度動作させる唯一の方法は、カスタム デバイスとアプリを再起動してから接続しようとすると、通信が正常になることです。しかし、いったん通信を停止して再開すると、失敗し続けます。

Android 4.2 を搭載した Nexus 4 を借りましたが、問題は解決しません。

私たちのデバイスの主な価値は Bluetooth RFCOMM アプリケーションに依存しているため、これは非常に面倒です。Android 4.2 の BT に関するドキュメントを再確認しましたが、大きな変更は見られませんでした。4.2 を実行していないすべての Android デバイスで動作するため、自分の側のコードにはかなりの自信があります。

ヒントや提案をいただければ幸いです。デバイスは 12 月の初めにデモを行う必要があり、この問題に早急に対処したいと考えています。

編集: 4.2.1 がリリースされましたが、問題はまだ解決されていません。少なくとも、それが機能しており、すぐに修正されるかどうかについて、確認を得ることができますか?

0 投票する
1 に答える
1117 参照

android - Android は RFCOMM ソケットでデータを送信します

Bluetooth 医療機器と Android アプリを接続しています。そこで、医療機器が SSP 通信プロトコルを許可しているため、通信チャネル RFCOMM (SPP プロトコル) を作成しました。デバイス ガイドには、SPP プロトコルで送信するコマンドの構造が記載されています。たとえば、単純な 4 バイト コマンドを表す 0x02 0x70 0x04 0x0A)。したがって、このようなコマンドを送信する必要があります (SPP プロトコルに準拠)。

の作成後、次の方法BluetoothSocketで入力ストリームと出力ストリームを取得します (このリンクをたどります):

16 進数シーケンス 0x02 0x70 0x04 0x0A で表されるコマンドを送信するには、この時点で何ができますか?

0 投票する
7 に答える
118762 参照

android - Android: Bluetooth UUID はどのように機能しますか?

Bluetooth UUID の意味がわかりません。UUID はプロトコルを示しますか (例: RFCOMM )? もしそうなら、なぜcreateRfcommSocketToServiceRecord()メソッドは名前に rfcomm を指定するのに UUID を必要とするのですか? BluetoothChat サンプル コードの UUID が一見恣意的でハードコードされているのはなぜですか?

この質問に従って、4.0.4 を実行しているデバイスがリフレクションを使用して (Android 以外の外部デバイスに) 接続しようとすると、null ポインター例外が発生するため、私の質問が発生します。ただし、その質問に対する解決策は私にはうまくいきません。UUID muuid = device.getUuids()[0].getUuid();例外を発生させます。

編集:この回答に従って(を使用して)シリアルポートサービスのUUIDをハードコーディングすることで、この問題を解決しましたUUID.fromString("00001101-0000-1000-8000-00805f9b34fb");

createInsecureRfcommSocketToServiceRecord(),さらに、リフレクション メソッドを使用せずに使用して、セキュリティで保護されていないrfcomm ソケットを作成するために UUID を指定する必要がある理由に困惑しています。

誰かが私をまっすぐにすることができますか?

0 投票する
1 に答える
174 参照

android - Bluetooth モジュールが Android Bluetooth クライアントから検出できないのはなぜですか?

この例のコードを Android Bluetooth 通信に使用しましたが、2 つの Android デバイスで正常に動作します。

しかし、私はこのBluetooth モジュールを使用するハードウェアを持っています。デバイスは J2ME アプリケーションによって検出されます。しかし、以前の Android アプリケーションを使用して検索すると、アプリケーションは Bluetooth モジュールを検出できませんでした。何が問題ですか ?

0 投票する
1 に答える
2105 参照

c - トランスポート エンドポイントが接続されていません

トランスポート エンドポイントが接続されていません

http://people.csail.mit.edu/albert/bluez-intro/x502.htmlからこのコードを使用しました。cのファイル機能を使って8MBの大きなファイルをbluetoothで転送するように改造しました。「トランスポート エンドポイントが接続されていません」というエラーが表示されます。どうすればよいですか?