gpt4 book ai didi

android - 如何通过 ADB 检查是否正在使用外部麦克风

转载 作者:搜寻专家 更新时间:2023-11-01 09:50:35 46 4
gpt4 key购买 nike

我正在尝试通过 ADB 检查是否使用了外部有线耳机麦克风。当我插入有线耳机时会自动检测到此麦克风,但出于外部脚本目的,检测此操作会非常有帮助。

我找不到麦克风的 Intent ,但在这里查找了耳机的 Intent : http://developer.android.com/reference/android/content/Intent.html

我尝试了这个广播 Intent 来单独检测耳机:

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

无论是否实际插入有线耳机,它都会收到此响应:

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

所以我不确定从这里去哪里。我什至无法检测到耳机是否已插入,更不用说是否正在使用外接麦克风了。任何帮助将不胜感激。谢谢!

最佳答案

我发现此方法适用于我的设备:

运行命令

adb shell dumpsys Activity 广播 | grep 麦克风

应该产生如下内容:

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 广播 | grep 麦克风 |尾-n 1

输出:

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

state 整数表示是否有东西插入耳机插孔,无论它是否包含麦克风。 0 表示未插电,1 表示已插电。

microphone 整数是指上次插入的耳机是否还包含麦克风。 0 表示否,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}]

关于android - 如何通过 ADB 检查是否正在使用外部麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36414380/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com