Zajmuję się tworzeniem aplikacji TV-Remote Simulator w systemie Android przy użyciu określonego oprogramowania pośredniego (nie ma znaczenia).Jak zrobić coś wielokrotnie, gdy przycisk jest naciśnięty?
W przypadku przycisków głośności (Volume + i Volume-) staram się wysyłać wielokrotnie sygnał "Volume Up", gdy jego przycisk jest naciśnięty.
To co próbowałem w ostatniej (kod dla jednego z przycisków, drugi musi być identyczne z wyjątkiem nazw):
Deklarowana wartość logiczną zmienna
boolean pressedUp = false;
ogłoszony klasa wewnętrzna z następującym AsyncTask:
class SendVolumeUpTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { while(pressedUp) { SendVolumeUpSignal(); } return null; }
}
Dodaj słuchacza do przycisku:
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; } });
Ja również próbowałem z prostych nitek jak w Increment-Decrement counter while button is pressed ale nie działało. Aplikacja działa dobrze dla pozostałych przycisków (kanałów itp.), Ale zmiana głośności jest całkowicie ignorowana.
Dzięki, teraz sygnały są wysyłane. Jednakże wysyła on dużo sygnałów przez krótki czas prasowania. Być może licznik powinien działać. – Truncarlos
Polecam odstęp między wywołania SendVolumeUpSignal(); Na przykład spróbuj tego: 'while while (pressedUp) { SendVolumeUpSignal(); Thread.sleep (100);} ' –
Przydatne. Dzięki: D – Truncarlos