¿Cómo hacer algo repetidamente mientras se presiona un botón?

Estoy desarrollando una aplicación de TV-Remote Simulator en Android usando un middleware específico (no de importancia).

En el caso de los botones de volumen (Volumen + y Volumen-), lo que estoy tratando de hacer es enviar la señal "Aumentar volumen" repetidamente mientras se presiona su botón.

Eso es lo que intenté por fin (código para uno de los botones, el otro debe ser idéntico excepto los nombres):

  1. Declarado una variable booleana

    boolean pressedUp = false; 
  2. Se declara una clase interna con la siguiente AsyncTask:

     class SendVolumeUpTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { while(pressedUp) { SendVolumeUpSignal(); } return null; } 

    }

  3. Agregue el oyente al botón:

     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; } }); 

También he intentado con hilos simples como en el contador Increment-Decrement mientras el botón está presionado pero ninguno de los dos ha funcionado. La aplicación funciona finamente para el resto de los botones (canales, etc.), pero el cambio de volumen se ignora por completo.

Olvidaste añadir un descanso; Al final del caso MotionEvent.ACTION_DOWN:. Eso significa que la línea pressedUp = false; Se ejecuta incluso en esa acción. Lo correcto sería:

 @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; } 

Ha considerado

  • Inicio de la tarea repititive en el evento onKeyDown
  • ¿Detener la tarea en el evento onKeyUp ?
  • Hacer diferencias entre setOnClickListener y setOnTouchListener
  • Imagen en lienzo con eventos táctiles
  • Cómo implementar OnTouch Listener en XML
  • Obtener coordenadas reales de xy de los usuarios
  • Disparar Evento táctil desde la vista DialogFragment a la vista de actividad principal
  • Android dragvable ImageVIew
  • Tiempo de aumento de OnLongPress
  • Pase Android NestedScrollView desplazamientos horizontales a un padre Ver
  • Implementación de la interfaz View.IOnTouchListener
  • Reducir animadamente el tamaño del botón en la prensa y recuperar su tamaño en la versión
  • ¿Cómo puedo mantener los eventos de ontouch manejados por un widget incluso si las coordenadas de tacto ya no están dentro del widget, en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.