如何在MainActivity函数中监听KeyDown ?



我有下面的代码,我想听音量下降按键,并做一些事情在相同的constraintLayout onClickListener:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.hide();
textureView = findViewById(R.id.view_finder);
constraintLayout = findViewById<ConstraintLayout>(R.id.screen)
imgCap = findViewById<ImageView>(R.id.imgCapture)
if (allPermissionsGranted()) {
Log.i("PermissionsGranted", "Starting Camera...")
startCamera()
} else {
ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);
}
}
private fun startCamera() {
constraintLayout.setOnClickListener { _: View? -> 
// do something
}

// do the same thing as ClickListener above if volume down key is pressed
}

我试图通过重写onKeyDown来破解这个问题,但还没有找到解决方案。

试试这个:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
//Volume up

return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
//Volume down

return true;
default:
return super.dispatchKeyEvent(event);
}
}

如果你想做同样的点击,你可以这样做:

constraintLayout.performClick();

最新更新