ユーザーからの入力なしで Android RFCOMM ソケットを作成するにはどうすればよいですか?
-
25-09-2019 - |
質問
シナリオは次のとおりです。
Bluetooth ドングルを備えた PC への RFCOMM ソケットを作成する Android 用のアプリケーションを作成する必要があります (サーバーも作成するつもりです)。
私の要件は、ユーザーがデバイスを手動でペアリングする必要がないことです。
実際、私は大規模なハックを使って、 createInsecureRfcommSocket.
少し シナリオ:RFCOMM ソケットを開いて Linux ボックスと情報を交換する Android アプリケーションがあります。デバイスに PIN を手動で設定できます (ハードコーディングはオプションです)
別の道を探しています:
JNIラッパーを作成する
行われたように ここ Max Kellermann によると、すべてのペアリング フェーズを行うための JNI レイヤーを作成できます。これは良い選択肢のはずですが、問題があります。
NDK 4b は libbluetooth ライブラリを提供していないため、NDK v.3 と同様に -lbluetooth は失敗します。
オプション:
- NDK 1.5 (lib bluetooth を含む) を見つけます。何日もウェブで検索しましたが、わかりませんでした。持っている人、またはどこで見つけられるか知っている人はいますか?
- libbluetooth for Android を自分でコンパイルし、-lbluetooth に使用します。運が悪いです、私はそれらを構築することができません。何かヒントはありますか?
API によって公開されているものを使用する
使い方を知っている人はいますか createRfcommSocketToServiceRecord ユーザーがデバイスを手動でペアリングしないようにする必要がありますか?出来ますか?サーバーはどのように書けばよいでしょうか?
何か分からないことがある
もしかしたら(確かに!)私が知らない何かがあるかもしれません。もしかしたら何か他のものを使えるでしょうか?RFCOMMではないですか?社民党?
Android API と手動でペアリングできるでしょうか?
質問するだけではなくても、十分に明確になっていれば幸いです。そしてもう一度言いますが、これは初めてではないので、私はあなたの手の中にあります:)
サポートしてくれた皆さん、ありがとう!
解決
最後に言えるのは、 あなたはできません.
ラッパーを使用したり、C モジュールを作成したりする方法を見つけたとしても、Android の進化により、使用しているものが変わる可能性があります。
したがって、選択肢はありません。悲しいことに。
Android Bluetooth API が将来どのように変化するかを見てみましょう。
他のヒント
AndroidのBluetoothのAPIが確定していない、とのでしょうの変更。自己責任。このクラスは、Bluetooth RFCOMM層へのAPIを実装しています。 RFCOMMソケットは、アドレスとポート番号を取ることで、通常のソケットに似ています。違いは、アドレスは、ブルートゥース・デバイス・アドレスであり、ポート番号はRFCOMMチャネルであることは勿論です。 APIは、connect、connectAsync、およびwaitForAsyncConnectと発信接続の作成のための方法を介してリスニングソケットの確立を可能にバインド、耳を傾け、受け入れるだけでなく、。ソケットを構築した後、あなたはそれを作成し、その後、あなたはそれを使用して行われたときにそれを破壊する必要があります。どちらも作成し、実際のデータのためのFileDescriptorを返す受け入れます。また、あなたは元のFileDescriptorを経由せずに、それぞれのストリームを取得するためのgetInputStreamメソッドおよびgetOutputStreamを呼び出すことができます。