5

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」を送っても何も変わらない...

4

3 に答える 3

2

私はまったく同じ問題をいじっていました。試行錯誤の日々を経て、ようやく機能するようになりました。HFのコマンドに応答する速度と、正しい行末(「COMMAND」)に依存すると思います。

これが動作する私の DroidScript です。クリーンアップされていませんが、機能します。

https://gist.github.com/t-oster/68a568ac4c4e133f67ac

于 2015-02-20T14:23:17.490 に答える
0

Bluetooth hfp 1.5 仕様を参照してください。この仕様では、どのコール セットアップでもないときに CIEV 応答を正常に理解できます。応答は +CIND = 1,0,0,0,5,0,5 である可能性があります。これらの値は hfp 仕様に基づいていることに注意してください。着信時に +CIEV: , ind- callsetup のインジケータと 1 の値を返し、ブレスレットに RING コマンドを送信します。

于 2014-10-14T06:40:20.117 に答える