AndroidでHFP(ハンズフリープロファイル)を介して振動機能付きのBluetoothブレスレットを制御しようとしています。ブレスレットに接続して、入力ストリームと出力ストリームにアクセスできました。
私の目標は、着信コールをシミュレートして、Bluetooth ブレスレットが振動し始めることです (これが唯一の方法のようです)。これを行うには、AT コマンドを使用します。22 ページのhttps://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=238193の Bluetooth 仕様では、サービス レベルの接続を確立するためのハンドシェイクを確認できます。「+CIEV」コマンドを使用するには、この接続を確立する必要があります (48 ページのハンドシェイクを参照)。
しかし、私のブレスレットがコマンド「AT+CIND=?」を返すと、どのように応答すればよいかわかりません。「CIND:」コマンドで回答する方法に関するヒントが見つかりません。また、受信確認の送信方法もわかりません (単に「OK」ですか?)。
これは、これを行うための完全に間違った方法でさえあるかもしれません。すべての提案を歓迎します。何らかの形で私を助けてくれたstackoverflowに関する投稿は1つしか見つかりませんでした。見つけた残りの投稿には回答がありませんでした。ちなみに、私はAndroid 4.1.2のスマートフォンを使用しています。ブレスレットはHFPとHSPに対応。前もって感謝します。
2014 年 10 月 29 日更新
===== この時点で確立された RFCOMM Socket を介した接続 =====
// read AT+BRSF=0 from device
byte[] buffer = new byte[200];
mBluetoothSocket.getInputStream().read(buffer);
Log.d(TAG, new String(buffer).trim());
//write answer BRSF: ...
mBluetoothSocket.getOutputStream().write("+BRSF=20\r".getBytes());
mBluetoothSocket.getOutputStream().write("OK\r".getBytes());
// read AT+CIND=? command
buffer = new byte[200];
mBluetoothSocket.getInputStream().read(buffer);
Log.d(TAG, new String(buffer).trim());
//write answer CIND: ...
mBluetoothSocket.getOutputStream().write("+CIND: (\"battchg\",(0-5)),(\"signal\",(0-5)),
(\"service\",(0,1)),(\"call\",(0,1)),(\"callsetup\",(0-3)),
(\"callheld\",(0-2)),(\"roam\",(0,1))".getBytes());
mBluetoothSocket.getOutputStream().write("OK".getBytes());
// read AT+CIND?
buffer = new byte[200];
mBluetoothSocket.getInputStream().read(buffer);
Log.d(TAG, new String(buffer).trim());
プロトコルの手順に従って、「AT+CIND?」を受信する必要があります。コマンドを入力してから、「+CIND: 5,5,1,0,0,0,0」というコマンドを送信できましたが、「AT+CIND?」というコマンドを受信しませんでした。指図。実際には何も受け取っていません。何か不足していますか?「OK」を送っても何も変わらない...