我正在創建一個Android應用程序來控制我的電腦的鼠標。該應用程序有4個按鈕(左,右,上,下)。在點擊它們時,應用程序向PC發送一個整數,在PC上運行的Java應用程序將接收它並移動光標。長按按鈕
現在我想要做的就是當用戶長時間按下按鈕時,應用程序必須連續發送數字到PC,直到用戶釋放按鈕。有人請幫我做到這一點。
我正在創建一個Android應用程序來控制我的電腦的鼠標。該應用程序有4個按鈕(左,右,上,下)。在點擊它們時,應用程序向PC發送一個整數,在PC上運行的Java應用程序將接收它並移動光標。長按按鈕
現在我想要做的就是當用戶長時間按下按鈕時,應用程序必須連續發送數字到PC,直到用戶釋放按鈕。有人請幫我做到這一點。
使用OnTouchListener來收聽MotionEvent.ACTION_DOWN,並且在發生這種情況時,開始向計算機發送適當的信號,例如每0.5秒。在MotionEvent.ACTION_UP
之後停止這樣做。
編輯:
public class MainActivity extends Activity implements OnTouchListener {
private TextView TV;
private Thread move_curser;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TV = (TextView) findViewById(R.id.TV1);
TV.setOnTouchListener(this);
}
public boolean onTouch(View v, MotionEvent event) {
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP;
if(isPressed) {
move_curser = new Thread(new move_curser());
move_curser.start();
your_methode();
return true;
} else if(isReleased){
move_curser.interrupt();
return true;
}
return false;
}
public class move_curser implements Runnable {
public void run() {
int time = 500;
try {
Thread.sleep(time);
} catch (InterruptedException e) {
interrupt();
}
while(true){
your_methode();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
interrupt();
}
}
}
}
}
我嘗試過這種代碼。問題是isPressed始終是真的,應用程序會崩潰。 –
@ Anoopss Golden 我認爲那麼你必須使用一個新的線程。 中斷()方法是否適合你..? – Alrick
它也沒有爲我工作...光標仍然無限期地移動....它不會停止,即使按鈕釋放後。 –