問題タブ [hfp]
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.
android - Bluetooth : Android デバイスから AT コマンドをヘッドセットに送信
HFP プロファイルを使用して、Bluetooh ヘッドセットと Android フォン間の接続を確立しました。
ここで、AT コマンドをヘッドセット デバイスに送信したいと考えています。
HFP 接続時に以下のコンポーネントを使用しました。
IBluetoothHeadset.aidl
ACL の BroadcastReceiver
私はcreateRfcommSocketToServiceRecord
ソケット接続を使用していません。
そして、次の関数は何をしますか?
android - コードの 1 つのセクションに古い API を使用するよう Android アプリケーションに強制する
ここ数日間、新しい API で構築されたアプリで、以前の Android API のメソッドの実装を使用する方法を考え出そうとしています。
具体的にはstartBluetoothSco()
、Bluetooth SCO チャネルを介して仮想通話を開始するために使用しています。API 17 では、これは完全に機能しますが、API 18 以降startBluetoothSco()
では、仮想呼び出しの代わりに生の SCO チャネルを開きます (開発者ドキュメントに記載されているように: http://developer.android.com/reference/android/media/AudioManager. html#startBluetoothSco() )。私が使用しているアクセサリは、生の SCO チャネルでは何もしません。
このシナリオでは、API 17 を使用してアプリをビルドすることはできません。近い将来、他の開発者が新しい API の機能を必要とする可能性が高いからです。
Bluetooth コードをライブラリ プロジェクトにラップし、これを API 17 でビルドしてからメイン アプリケーションに統合し、それを API 18 でビルドすることができると思いました。残念ながら、これはうまくいきませんでした。OS は、startBluetoothSco()
API 18 でビルドされたアプリから が呼び出されていることを認識しているため、メソッドの API 18 実装を使用しているようです。
API 18 アプリケーションに API 17 実装を強制的に使用させる方法を誰か提案していただければ、とても感謝しています。
ありがとう
iphone - iPhone と Bluetooth デバイス間の Bluetooth HFP を使用したプッシュツートーク (PTT) アプリ
iPhone ストアで PTT アプリを見つけました。今度は自分用に作ってみたいと思います。過去 1 週間、コーディングでこれを達成する方法に関するすべての投稿を読んでいます。BTdevice を iPhone とペアリングしたとしましょう (BTdevice は HFP と A2DP をサポートしています)。
- BTdevice のボタンを押して iPhone に電話をかけると、iPhone アプリで、この EVENT またはアプリ内のデータを認識し、オーディオを iPhone スピーカーにルーティングします。
- BTdevice のボタンが離されると、ユーザーは iPhone の画面上のボタンを押して BTdevice に話しかけます。音声は BTdevice スピーカーにルーティングする必要があります。
コーディングでこれを実現するには、いくつかの手順を実行してください。利用可能な場合は、ライブラリ、クラス、およびサンプルも。
HFP と A2DP は Apple で公開されているため、このアプリケーションは Apple との MFi NDA なしで実現できることを理解しました (利用可能なドキュメントが限られていることは理解しています)。
次の投稿が、私がしようとしていることに正確に対処していることがわかりました。ご覧ください。
android - AT コマンドを介して HFP デバイスと通信する Android
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 を介した接続 =====
プロトコルの手順に従って、「AT+CIND?」を受信する必要があります。コマンドを入力してから、「+CIND: 5,5,1,0,0,0,0」というコマンドを送信できましたが、「AT+CIND?」というコマンドを受信しませんでした。指図。実際には何も受け取っていません。何か不足していますか?「OK」を送っても何も変わらない...
android - kitkat での hfp クライアント ロールの実装
要件は、Android デバイスで hfp クライアント ロールを持つことです。そのため、Lollopop バージョンで利用可能な hfp クライアント ロールの実装をバックポートしました。オーディオの変更を除いて、すべてがスムーズに進みました。
現在、他の電話 (HFP クライアントとしてのデバイスと AG としてのスマートフォン) にダイヤル/受信できないという問題に直面しています。通話が適切に終了しないシナリオに遭遇しました。
ここにすべての観察結果をリストします-
電話(AGとして機能)がジェリービーンの場合、ダイヤル/受信は問題ありません。
電話 (AG として機能) が kitkat の場合、電話のダイヤル/受信はスムーズに行われません (ダイヤル中のように、hfp クライアント デバイスは CALL_STATE_DIALING を受信せず、代わりに CALL_STATE_ALERTING を取得します。通常、通話は確立されますが、デバイスからの通話は終了しません。うまくいく)。ユーザーがAG電話を切断して再度接続すると、奇妙なことに。番号の受信/ダイヤルが正常に機能し始めます。
電話 (AG として機能) が lollipop の場合、ダイヤル/受信コールは #2 で説明したのと同じように機能しますが、今回は切断/接続は動作に影響しません。
この問題に関する詳細情報が必要な場合はお知らせください。
注 -これはダイヤル ケースです。ログは通話が受け入れられるまで記録されます。違いは、動作していないシナリオで android.bluetooth.headsetclient.profile.action.AG_CALL_CHANGED State: 2(CALL_STATE_DIALING) を取得しないことです
編集: bluez であるため JellyBean が機能することに気付きました。問題は bluedroid スタックを持つ sdk にあります。誰かが助けることができるいくつかの指針を共有できますか. 問題はまだ解決していません。Dialing、Accept、および Terminate の ack が得られません。
ケースログが機能しない