我想按下按钮时通过蓝牙发送数据。我正在使用ontouchlistener。按钮关闭事件发生后,数据传输开始,但是当按钮启动事件发生时,传输不会立即停止。在蓝牙接收器端,我看到在按钮释放一段特定时间后仍有大量数据传入。
我试图用一个标志来解决这个问题,该标志在被调用的方法中的while语句中进行求值。但这让我想到了上面描述的问题。
然后我试图通过一个在按钮启动事件期间被杀死的额外线程来解决这个问题。但结果没有改变。
这是我的代码。也许有人可以帮助我。
mButtonMoveRight.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
moveRight p = new moveRight();
Thread th = new Thread(p);
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
pressed_right = true;
th.start();
break;
case MotionEvent.ACTION_UP:
pressed_right = false;
th.interrupt();
break;
}
return false;
}
});
private class moveRight implements Runnable
{
@Override
public void run()
{
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
while (pressed_right == true) {
if (btSocket != null) {
try {
btSocket.getOutputStream().write("r".toString().getBytes());
} catch (IOException e) {
msg("Error");
}
}
}
}
}