【发布时间】:2021-10-14 16:09:24
【问题描述】:
我添加了 dispatchKeyEvent 和 onKeyDown 来检测活动中的音量变化事件,这在具有物理音量按钮的设备上运行良好。在华为 mate 30 pro 的情况下,上述事件不会触发,因为它没有物理音量按钮,而是控制音量的手势。 有什么办法吗??
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
d(TAG, "signal onKeyDown $keyCode")
when (keyCode) {
KeyEvent.KEYCODE_HOME -> {
d(TAG, "signal onKeyDown KEYCODE_HOME")
if (alertDialog != null && alertDialog?.isShowing == true) {
releaseDataAndFinishActivity()
}
return false
}
KeyEvent.KEYCODE_BACK -> {
onBackPressed()
return false
}
KeyEvent.KEYCODE_VOLUME_DOWN -> {
updateVolumeOnKeyPress(false)
return true
}
else -> return true
}
}
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
updateVolumeOnKeyPress(true)
return true
}
return false
}
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
d(TAG, "signal dispatchKeyEvent $event")
return super.dispatchKeyEvent(event)
}
【问题讨论】:
-
hi@Muhammad Ali,请问您使用的是哪种手势?
-
hi@Muhammad Ali,根据团队的说法,华为 P40 Pro 是物理按钮,而不是虚拟按钮。能否请您重新确认一下手机的型号?
-
@shirley 抱歉,这是华为 mate 30 pro,不是 p40。
标签: java android kotlin android-support-library huawei-developers