按下按钮时如何重复执行某些操作?
我正在使用特定的中间件(不重要)在Android中开发电视远程模拟器应用程序。按下按钮时如何重复执行某些操作?
在音量按钮(音量+和音量 - )的情况下,我想要做的是在按下按钮时重复发送“音量提高”信号。
这就是我在上次尝试(代码按钮之一,其他必须是除了名称相同):
-
声明布尔变量
boolean pressedUp = false;
-
宣布为内部类与以下AsyncTask:
class SendVolumeUpTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { while(pressedUp) { SendVolumeUpSignal(); } return null; }
}
-
监听器添加到按钮:
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,但既不工作。该应用程序对其余的按钮(通道等)工作良好,但音量改变完全被忽略。
你忘了补充一点;在MotionEvent.ACTION_DOWN:case的结尾处。这意味着行UpUp= false;即使在该动作中也会执行。正确的做法是:
@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;
}
是不是那些设备的物理键的方法?我的意思是在我的远程应用 – Truncarlos
是触觉的,是的,顾名思义就是这样..但他们不是:-) –
无论如何,以前的答案帮助我够了,谢谢:D – Truncarlos
谢谢,现在发送信号。但是,它会在短时间内发送很多信号。也许一个柜台应该工作。 – Truncarlos
我建议在SendVolumeUpSignal()之间有一个间隔时间;例如试试这个:'while(pressedUp){SendVolumeUpSignal(); Thread.sleep(100);}' –
有用。感谢:D – Truncarlos