2016-04-04 22 views
1

外部有線ヘッドセットマイクが使用されているかどうかをADBで調べようとしています。このマイクは、有線ヘッドセットを接続すると自動的に検出されますが、外部のスクリプト目的では、この操作を検出すると非常に便利です。外部マイクがADB経由で使用されているかどうかを確認する方法

私はマイクの意図を見つけるが、ここでは、ヘッドセットの意図を見上げことができませんでした: http://developer.android.com/reference/android/content/Intent.html

私は一人でヘッドセットを検出するため、この放送の意図を試してみました:

これを取得します
adb shell am broadcast -a android.intent.action.HEADSET_PLUG 

有線ヘッドセットが実際に接続されているかどうかの応答:

Broadcasting: Intent { act=android.intent.action.HEADSET_PLUG } 
Broadcast completed: result=0 

私はどこから行くべきかわかりませんここに。私はヘッドセットが差し込まれているかどうかを検出することすらできず、外付けマイクを使用している場合ははるかに少ない。どんな助けでも大歓迎です。ありがとう!

+0

オーディオマネージャの基準点:http://developer.android .com/reference/android/media/AudioManager.html#ACTION_HEADSET_PLUG 状態 - プラグがない場合は0、プラグがある場合は1。 名前 - ヘッドセットタイプ、人間が読める文字列 マイク - ヘッドセットにマイクがある場合は1、そうでない場合は0 多分これらにアクセスする必要がありますか? – eewael

答えて

1

私はこの方法は私のデバイス上で動作しますが見つかりました:

実行]コマンドのようなものを作る必要があります

adb shell dumpsys activity broadcasts | grep microphone

:最後の行は、粘着性の放送内で

extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
extras: Bundle[{name=h2w, state=0, microphone=1}] 
extras: Bundle[{name=h2w, state=1, microphone=1}] 
    Bundle[{name=h2w, state=1, microphone=1}] 

をダンプのセクション、変更されるまで同じままのブロードキャスト

我々はtailを使用して、最後の行を取ると、それを解剖のであれば、それはヘッドセットの現在の状態が含まれています

adb shell dumpsys activity broadcasts | grep microphone | tail -n 1

出力:

Bundle[{name=h2w, state=1, microphone=1}]

state整数を指し、マイクが入っているかどうかにかかわらず、何かがヘッドホンジャックに差し込まれているかどうかを確認します。プラグが差し込まれていない場合は0、差し込まれている場合は1

microphone整数は、最後に接続されたヘッドセットにもマイクが含まれているかどうかを示します。 noは0、yesは1です。

シナリオ

ヘッドホンの正常ペアが現在接続されている場合、出力は次のようになります

Bundle[{name=h2w, state=1, microphone=0}]


マイク付きヘッドセットが現在の出力に接続されている場合

Bundle[{name=h2w, state=1, microphone=1}]


何が接続されていない場合、出力はいずれかです:いくつかの余分な値に

Bundle[{name=h2w, state=0, microphone=0}]

または

Bundle[{name=h2w, state=0, microphone=1}]

+0

これはすばらしいです、ありがとう!あなたが言及した同じユースケースで同じ出力を検証しました。これは、外部ヘッドセットがマイクを持っているかどうかを判断するために使用することができます。 1つの問題ヘッドセットのプラグインが行われていない期間が経過した後、ヘッドセットの動作に関するブロードキャストメッセージがなくなったことが、少なくとも私の電話では気づいた。これは、主に「最近の」イベントが発生したときに機能しますか? – eewael

+0

このコマンドの出力はありません。マイクがまったく動作していない可能性がありますか? https://android.stackexchange.com/questions/180450/how-to-determine-which-application-is-blocking-microphone-usage – codecowboy

関連する問題