在java中同时按下音量增大和减小按钮一段时间以执行特定功能

Posted

技术标签:

【中文标题】在java中同时按下音量增大和减小按钮一段时间以执行特定功能【英文标题】:press volume up and down button at same time for some period of time to perform specific function in java 【发布时间】:2022-01-19 13:46:36 【问题描述】:

我如何检测是否同时按下音量增大和减小按钮一段时间以在 android 上执行特定任务。我目前正在使用 java 开发一个应用程序,该应用程序在一段时间内同时增加按音量增大和减小按钮的计数。

if(keycode == KeyEvent.KEYCODE_VOLUME_DOWN && keycode == KeyEvent.KEYCODE_VOLUME_UP) 
    // Two buttons pressed, call your function
    count++;
    String num = String.valueOf(count);
    number.setText(num);
    Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();

我试过这段代码,但没有用

我也使用了布尔值

while(keycode == KeyEvent.KEYCODE_VOLUME_DOWN || keycode == KeyEvent.KEYCODE_VOLUME_UP)
    if (keycode == KeyEvent.KEYCODE_VOLUME_DOWN)
        down = true;
        if(keycode == KeyEvent.KEYCODE_VOLUME_UP)
            up = true;
            if(up && down) 
                // Two buttons pressed, call your function
                Toast.makeText(getApplicationContext(), "Hello", 
                               Toast.LENGTH_SHORT).show();
            
        
    

【问题讨论】:

【参考方案1】:

试试这个,它会起作用的:

ArrayList<Integer> pressedkeys = new ArrayList<>(); 

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) 

    pressedkeys.add(keyCode);

    if(event.isLongPress())
    if(pressedkeys.contains(24) && pressedkeys.contains(25)) 

     //Do Something;    

    

    return (true or false);


@Override
public boolean onKeyUp(int keyCode, KeyEvent event) 
    
    pressedkeys.removeAll(Collections.singleton(keyCode));
    return (true or false);

如果您处理了该事件并且不希望发生任何其他事情,则返回 true;如果您希望让下一个接收者处理该事件,则返回 false。

注意:请随时改进我的答案...

您也可以查看:Android 2 keys at a time

【讨论】:

以上是关于在java中同时按下音量增大和减小按钮一段时间以执行特定功能的主要内容,如果未能解决你的问题,请参考以下文章

xamarin.forms - 音量增大和减小键的事件侦听器

是否可以在 Flutter 中完全处理音量增大/减小产生的事件?

LocalPushNotification 声音和 iPhone 的音量按钮

在非默认音频设备上设置 HID 音量调高/调低

iPhone - 无法使用硬按钮调节音量

如何从活动中调用片段方法?