問題タブ [headset]
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 - VoIP に android.net.rtp を使用する
android.net.rtp
ライブラリを使用して VoIP アプリケーションを作成しようとしています。そのオーディオ ストリームは、正しく送受信できます。
私の問題は次のとおりです。呼び出し先の電話のスピーカーは正常に動作しますが、ヘッドセットは常にミュートされています (スピーカーをオフにしても)。
私のコード:
android - Bluetooth ヘッドセットの CALL ボタンを傍受するにはどうすればよいですか?
ボタンが 1つの Bluetooth ヘッドセット(Jabra BT2045) を持っていますが、ボタンの押下をインターセプトしたいと考えています。バックグラウンドアシスタントService
がユーザーの音声コマンドを解釈し、それに応じて行動できるようにするために、これが必要です。
(有線メディア ヘッドセットを使用して) 問題なくインターセプトできるBroadcastReceiver
名前を定義しましたが、BT コール ボタンをインターセプトすることが重要です。私が読んだ別の提案に基づいてアクションをインターセプトしようとしましたが、これも失敗します。MediaButtonIntentReceiver
ACTION_MEDIA_BUTTON
CALL_BUTTON
または、ボタンをダブルタップすると最新の人に電話がかかり、長押しすると音声ダイヤラーが表示されます.
単一のボタンまたはこれらの手順を傍受するにはどうすればよいですか (+それらを防ぐ)? アイデアのプロトタイピングなのでハックは大歓迎ですが、Android のバージョンに関係なく機能するソリューションが最適です。
Android 4.3 で Galaxy Nexus を使用しています。
AndroidManifest.xml (レシーバー定義を含む)
レシーバーの定義:
更新 1:
アクティビティに追加のインテント フィルター(以下を参照) を設定すると、(デフォルトとして設定した後) 長押しすると起動します。これは正しい方向に進んでいるように見えますが、今ではアクティビティが何度も開始され、奇妙な結果が生じています。
現在、アクティビティを 1 回だけ開始することを調査しています。アクティビティが再開されたときに、ランチャーから開始されたのか、VOICE_COMMAND
アクションから開始されたのかを検出できる必要があります。このメソッドを機能させるには、アクティビティが 1 回だけ開始されるようにする必要があります (ボタンを押すと、アクティビティが再開されます)。
さらに、可能であれば、アクティビティがサービスの実行中のみデフォルトになるようにしたいと考えています。
更新 2:
残念ながら、Bluetooth ヘッドセットの SCO チャネルが有効になっている間は、アクティビティは作成されません。私のアプリケーションでは、ユーザーが BT ヘッドセットから発信されなければならない定期的な更新を (TTS 経由で) 受信するため、このチャネルを開く必要があります。この方法では、多くのオーバーヘッドが発生する可能性があります。
android - マイクが使えない
VoIP アプリケーションを開発しています。
Galaxy Tab 4.0.4 で Bluetooth ヘッドセットを使用すると、次の問題が発生します。
VOIP 通話の途中で音声通話が発生した場合、またはアプリケーションを停止してアプリケーションを再起動した場合、Bluetooth ヘッドセット マイクが再び使用されなくなります。
問題が発生すると、Bluetooth アダプタまたは Bluetooth デバイスを停止してから起動しても、Bluetooth ヘッドセット マイクが使用されなくなります。adb 再起動のみが問題を解決するようです。
私が完全に理解していない「汚い」修正があります:
アプリケーションから呼び出して問題が発生した場合:
audioManager.setMode(AudioManager.VOICE_CALL)
audioManager.setMode(AudioManager.NORMAL)
Bluetooth ヘッドセットのマイクを再度有効にします。
この呼び出しが常に機能している場合は、問題を解決するのに十分ですが、問題があります: 時々 (約 25%) スニペットを呼び出した直後に、SCO が有効になるたびに Bluetooth ヘッドセットで非常に迷惑な干渉を聞き始めます。
AudioManager ドキュメントの次のコメントに関連していると思います:「特に、MODE_IN_CALL モードは、ラジオ レイヤーからの信号がプラットフォーム ミキサーに供給されるため、電話をかけるときにテレフォニー アプリケーションでのみ使用する必要があります。 '
問題は、説明された問題の原因と回避方法についてのアイデアはありますか??
android - 放送受信機の最高優先度が機能しない
ACTION_MEDIA_BUTTON ハンドラーを使用してアプリケーションを実行していますが、MX Player または Apollo によって常にインターセプトされているようで、インテントが得られません。
タグに1000と2147483647の両方の優先度を設定し、setPriorityを使用してコンストラクターの直後に試しました
MX Player または Apollo が存在しない場合にアプリケーションが動作する
また、Google Play の Headset Interceptor アプリを使用してみました。Autostarts アプリケーションを使用して MX Player へのイベントを拒否しようとしましたが、何も役に立ちません。
onCreateで:
受信機で
マニフェストで
android - Android のヘッドセット ボタン
インテントを 100000に設定しましたpriority
が、ヘッドセット ボタンを押してもアプリは無視されます。代わりに、Built-in
私の電話で音楽プレーヤーをトリガーするだけです。これを機能させるにはどうすればよいですか?
これが私のコードです
android - Android Bluetooth ヘッドセットの通話ボタンが機能しない
Bluetoothヘッドセットのボタンが押されたら聞きたいです。私のヘッドセットにはメディア ボタンがなく、通話ボタンしかないようです。したがってandroid.intent.MEDIA_BUTTON
、動作しません。また、プログラムで rfcomm を介してヘッドセットに接続しようとしましたが、役に立ちませんでした。無効な RFC スロット ID です。
ヘッドセットのボタンを押すと、ログに次のエラーが表示されます。
したがって、検出されます。誰か提案はありますか?
私のデバイスは: google nexus 7(2012)と
私のヘッドセットは: plantronics ml18
bluetooth - カスタムメイドのBluetoothデバイスからAndroidフォンにコマンドを送信して音楽プレーヤーを制御する
次のコンポーネントを使用して単純な Bluetooth デバイスを作成しました
- HC05 モジュール
- Arduino Uno ボード (再プログラム可能なマイクロコントローラー付き)
これらのコマンドが Bluetooth ヘッドセットから送信されたかのように、BT デバイスからコマンドを送信できるかどうか疑問に思っています。
つまり、次のとおりです。
- 0x00000055 キーコードを送信 - 音楽が一時停止します (KEYCODE_MEDIA_PLAY_PAUSE)
- 0x00000058 を送信 - 前の曲が再生を開始します (KEYCODE_MEDIA_PREVIOUS)
- ...
Android が使用するキーコードの完全なリストは次のとおりです: http://developer.android.com/reference/android/view/KeyEvent.html
おそらく、着信コマンドを読み取り、ヘッドセット ボタンの押下をシミュレートする別のアプリを作成できますが、それは私が望むものではありません。私に関する限り、一部のヘッドセットはプラグアンドプレイです。つまり、Android デバイスに追加のアプリをインストールする必要はありません。Androidフォンにコマンドを送信するために現在使用しているコードは次のとおりです。
両方のデバイスがペアリングされていますが、携帯電話の音楽プレーヤーはこれらのコマンドの影響を受けません。「BT からの受信コマンド」用のサイド アプリを作成せずに音楽プレーヤーを制御することはできますか?
android - Android: 外部マイク (ジャック入力 3.5mm) を強制的にオンのままにする
Android システムに 3.5 mm ジャックをマイク ソースとして選択させるにはどうすればよいですか? AudioRecord クラスを使用して録音を行っています。
外部マイクを使用しています。検出された場合はすべて正常に動作しますが、外部マイクが自動的に検出されないことがあります。TRRS スプリッター (安価な $3 のもの) を使用して、3.5mm ジャックを別々のマイク ジャックとヘッドフォン ジャックに分割します (録音と再生を同時に行う必要があります)。
AudioManager.setWiredHeadsetOn() は非推奨であり、使用しないよう指示されています。
1) 正しいマイク インピーダンスを提供するために、外部ハードウェアを追加する必要がありますか?
2) コードで入力を強制できますか?
3) このレベルでカスタム ROM アーカイブ オーディオ コントロールを使用できますか? これが最適なオプションでしょうか?
ありがとう