0

ボタンが押されている限りarduino mega 2560にデータを送信したいのですが、そのボタンが離されると情報の送信が停止します。MotionEvent 定数で onTouchListener を使用しています。しかし、これを携帯電話で実行すると、ボタンを押すと、しばらくしてボタンを離してもデータが送信されます。ここでどこが間違っていますか?

    switch (v.getId()) {

    case R.id.left1: // check what button is pressed

        while(event.getAction() == MotionEvent.ACTION_DOWN) {

            bt.sendData("1"); // while pressing the button it sends data

        } 
        if(event.getAction() == MotionEvent.ACTION_UP) {

            // when it stops, do nothing

        }

        break;

    }

    return true;
4

2 に答える 2

0

while(event.getAction() == MotionEvent.ACTION_DOWN)あなたの問題は、最初のイベントを受け取ったときに開始する無限ループにあります。

OnTouchListenerビューにディスパッチされる各イベントに対して呼び出されます。ダウンとアップは別のイベントであり、イベントは処理中に変更されません。

したがって、問題を解決するには、別のスレッドからデータを送信する必要があります。開始し、スレッドが終了することを示すためACTION_DOWNに変更されるフラグもあります。ACTION_UP

于 2016-01-16T19:36:13.587 に答える
-1

ボタンが離されたときにフラグを設定する必要がありbt.sendDataますが、これはコードにないようです。false

水道の蛇口を開けたのに、飲み終わったら閉めるのを忘れてしまうようなものです。それが役に立てば幸い

于 2016-01-16T19:18:49.360 に答える