作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何检测我的设备是否插入了麦克风?另外,如果麦克风从设备中拔出,我如何收到通知?
我似乎无法在 android 文档中看到有关如何执行此操作的信息,在我的谷歌搜索中也没有。
谢谢!
最佳答案
你可以创建一个BroadcastReceiver
来监听Intent.ACTION_HEADSET_PLUG
,如果min sdk为21,建议使用其他常量AudioManager.ACTION_HEADSET_PLUG
。
当您注册接收器时,您将收到一个“粘性”Intent
,然后在插入/拔出麦克风时收到其他消息。 BroadcastReceiver
非常简单,找不到“state”和“microphone”键的文档,只是在调试器中看到了它们。所以类可能看起来像:
class MicrophonePluggedInReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_HEADSET_PLUG) {
val state = intent.getIntExtra("state", 0)
val microphone = intent.getIntExtra("microphone", 0)
val isMicrophonePluggedIn = state == 1 && microphone == 1
Toast.makeText(context, "microphone plugged in $isMicrophonePluggedIn", Toast.LENGTH_LONG).show()
}
}
}
然后你只需要注册(和取消注册)
val microphonePluggedReceiver = MicrophonePluggedInReceiver()
// ...
context.registerReceiver(microphonePluggedReceiver, IntentFilter(Intent.ACTION_HEADSET_PLUG))
// ...
unregisterReceiver(microphonePluggedReceiver)
关于android - 如何在android中检测插入和拔出麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49076246/
我是一名优秀的程序员,十分优秀!