gpt4 book ai didi

android - 如何在按下按钮时重复做某事?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:55:03 25 4
gpt4 key购买 nike

我正在使用特定的中间件(不重要)在 Android 中开发电视遥控模拟器应用程序。

对于音量按钮(音量+ 和音量-),我要做的是在按下按钮时重复发送“提高音量”信号。

这就是我最后尝试的方法(其中一个按钮的代码,另一个必须相同,除了名称之外):

  1. 声明了一个 bool 变量

    boolean pressedUp = false;
  2. 使用以下 AsyncTask 声明了一个内部类:

    class SendVolumeUpTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... arg0) {
    while(pressedUp) {
    SendVolumeUpSignal();
    }
    return null;
    }

  3. 给按钮添加监听器:

    final Button buttonVolumeUp = (Button) findViewById(R.id.volup);
    buttonVolumeUp.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {

    case MotionEvent.ACTION_DOWN:

    if(pressedUp == false){
    pressedUp = true;
    new SendVolumeUpTask().execute();
    }

    case MotionEvent.ACTION_UP:

    pressedUp = false;

    }
    return true;
    }
    });

我也尝试过使用简单的线程,如 Increment-Decrement counter while button is pressed但都没有用。该应用程序可以很好地处理其余按钮( channel 等),但完全忽略了音量变化。

最佳答案

您忘记添加一个中断;在 MotionEvent.ACTION_DOWN: 案例的末尾。这意味着行 pressedUp = false;即使在那个 Action 上也会被执行。正确的做法是:

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

if(pressedUp == false){
pressedUp = true;
new SendVolumeUpTask().execute();
}
break;
case MotionEvent.ACTION_UP:

pressedUp = false;

}
return true;
}

关于android - 如何在按下按钮时重复做某事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com