【发布时间】:2020-12-08 22:14:19
【问题描述】:
As one can read here,我试着调节音量。这里我设置了 AudioManager:
audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
我对 onKeyDown() 的反应如下:
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when (event?.keyCode) {
KeyEvent.KEYCODE_VOLUME_UP -> {
adjustVolume()
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)
return true
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
adjustVolume()
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)
return true
}
else -> {
return super.onKeyDown(keyCode, event)
}
}
}
然后adjustVolume() 显示音量值。到目前为止,这适用于手机。我可以用自己的 UI 调节音量,我可以看到日志输出。
但是当我在 Android TV Emulator 上运行此应用时,链接代码不起作用,并且我看到音量的库存 UI。
根据@I~nigos 的回答,内核已经在电视硬件级别“消耗”了keyevent。建议处理来自内部混音器的声音。
但是,我怎样才能截获声级。也是通过拦截密炼机.. 但是怎么做呢?
【问题讨论】:
标签: android android-audiomanager