¿Cómo puedo iniciar una aplicación de Android al pulsar el botón de volumen hacia arriba o hacia abajo?
Tengo un requisito en una aplicación de seguridad personal donde un usuario tiene que iniciar una aplicación tan pronto como sea posible pulsando el botón de volumen hacia arriba o hacia abajo. ¿Cuál es el procedimiento para agregar esta funcionalidad?
- Tabla de Jacinto6 con Android: cómo construir un firmware de retrato?
- Cuota de mercado de dispositivos Android basados en diferentes plataformas de hardware
- ¿Por qué imageView.setLayerType (View.LAYER_TYPE_SOFTWARE, null); Y <aplicación android: hardwareAccelerated = "false" tienen un efecto diferente?
- Establecer la posición del ratón en el software
- ¿Cómo determinar si un dispositivo Android tiene una pantalla, es decir, si es un set top de Android?
- ¿Cómo obtener un solo marco de vista previa en Camera2 API Android 5.0?
- Android: Obtener información de hardware mediante programación
- Cómo simular los botones de control de medios de hardware en un emulador de Android
- Activa la aceleración de hardware si está disponible (como Android 3+) con Android APK 2.2
- NullPointerException en HardwareRenderer
- Android no puede usar hdmi en la pestaña creativa y necesita ser notificado en todos los dispositivos (máximo) tan pronto como hdmi esté conectado
- Android AudioRecord clase - proceso de mic audio en vivo rápidamente, configurar la función de devolución de llamada
- Cámara Android android.hardware.Camera obsoleta
No hay ningún evento de difusión para el cambio de volumen.
Sin embargo, hay una acción indocumentada llamada " android.media.VOLUME_CHANGED_ACTION
" que puede utilizar, pero probablemente no funcionará en todos los dispositivos / versiones por lo que no se recomienda .
El uso de otros botones (por ejemplo , botones de medios ) sería posible sin embargo.
EDIT: Ejemplo de código (utilizando la acción sin documentar):
AndroidManifest.xml
... <receiver android:name="VolumeChangeReceiver" > <intent-filter> <action android:name="android.media.VOLUME_CHANGED_ACTION" /> </intent-filter> </receiver> ...
VolumeChangeReceiver.java
public class VolumeChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { int newVolume = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", 0); int oldVolume = intent.getIntExtra("android.media.EXTRA_PREV_VOLUME_STREAM_VALUE", 0); if (newVolume != oldVolume) { Intent i = new Intent(); i.setClass(context, YourActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } }
Consulte esta pregunta si desea desbloquear la pantalla al iniciar su aplicación.
He utilizado este código para escuchar el botón de volumen antes,
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)){ //Do something } if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)){ //Do something } return true; }
Este método obtiene eventos de volumen hacia arriba y hacia abajo.
- ¿Cómo encontrar los dispositivos bluetooth disponibles en el rango?
- Función de devolución de llamada de Delphi de TWebBrowser por javascript en Delphi XE6 para todas las plataformas (incluyendo iOS, ANDROID)?