2016-04-04 3 views
1

Ich versuche über ADB zu überprüfen, ob das externe kabelgebundene Headset-Mikrofon verwendet wird oder nicht. Dieses Mikrofon wird automatisch erkannt, wenn ich das verkabelte Headset anschließe, aber für externe Scripting-Zwecke wäre es sehr hilfreich, diese Aktion zu erkennen.So überprüfen Sie, ob ein externes Mikrofon über ADB verwendet wird

ich keine Absicht für das Mikrofon finden konnte, aber sah hier das Headset Absicht up: http://developer.android.com/reference/android/content/Intent.html

ich das Headset diese Übertragung Absicht versucht, allein zum Nachweis:

adb shell am broadcast -a android.intent.action.HEADSET_PLUG 

die diese bekommt Antwort, ob ein verkabeltes Headset tatsächlich eingesteckt ist oder nicht:

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

Also ich bin mir nicht sicher, wo ich hingehen soll Hier. Ich kann nicht einmal erkennen, ob das Headset angeschlossen ist, geschweige denn, wenn das externe Mikrofon verwendet wird. Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

+0

Audio Manager Referenzpunkte auf einige zusätzliche Werte: http://developer.android .com/reference/android/media/AudioManager.html # ACTION_HEADSET_PLUG Zustand - 0 für unplugged, 1 für plugged. Name - Headset-Typ, lesbare Zeichenfolge Mikrofon - 1 wenn Headset ein Mikrofon hat, 0 sonst Vielleicht muss ich irgendwie auf diese zugreifen? – eewael

Antwort

1

fand ich diese Methode auf meinem Gerät funktioniert:

Führen Sie den Befehl

adb shell dumpsys activity broadcasts | grep microphone

, die so etwas wie produzieren sollte:

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}] 

Die letzte Zeile ist in den klebrigen Sendungen Abschnitt des Dumps, die Broadcasts, die gleich bleiben, bis sie geändert werden.

Wenn wir also die letzte Zeile unter Verwendung tail nehmen und sezieren, es enthält den aktuellen Status des Headsets:

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

output:

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

Die state ganze Zahl bezeichnet ob etwas in die Kopfhörerbuchse eingesteckt ist, unabhängig davon, ob es ein Mikrofon enthält.

Die Ganzzahl microphone bezieht sich darauf, ob das Headset, das zuletzt eingesteckt wurde, auch ein Mikrofon enthält. 0 für nein, 1 für ja.

Szenarien

Wenn ein normales Paar Kopfhörer zur Zeit eingesteckt ist, wird der Ausgang sein:

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


Wenn ein Headset mit einem Mikrofon zur Zeit eingesteckt ist, wird der Ausgang wird sein:

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


Wenn nichts eingesteckt ist, wird der Ausgang entweder:

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

oder

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

+0

Das ist großartig, danke! Ich habe die gleichen Ausgaben in den von Ihnen genannten Anwendungsfällen verifiziert. Dies kann sicher verwendet werden, um festzustellen, ob das externe Headset ein Mikrofon hat oder nicht. Ein Problem, das mir (zumindest auf meinem Handy) aufgefallen ist, dass nach einer Zeit, in der kein Headset eingesteckt war, keine Broadcast-Nachrichten mehr für die Headset-Aktion gesendet wurden. Also funktioniert das hauptsächlich, wenn ein "neues" Ereignis stattgefunden hat? – eewael

+0

Ich bekomme keine Ausgabe von diesem Befehl. Glauben Sie, dass das Mikrofon überhaupt nicht funktioniert? https://android.stackexchange.com/questions/180450/how-to-determine-which-application-is-blocking-microphone-usage – codecowboy

Verwandte Themen