Android: Cómo alternar entre los ajustes de vibración (siempre, nunca, sólo en modo silencioso, sólo cuando no está en modo silencioso)? Revisited
Problema
Encontrar métodos para alternar entre:
- Volley - ¿Cómo enviar los parámetros de petición DELETE?
- Android: método vibrador (si el teléfono no tiene vibrador?)
- Una forma fiable de saber cuándo se resiste el teclado virtual de Android (devolución de llamada que funciona en todos los teléfonos)
- No se puede evaluar el módulo 'react-native-maps': No se ha encontrado la configuración con el nombre 'default'
- BindException con el permiso de INTERNET solicitado
- Siempre
- Nunca
- Sólo en modo silencioso
- Sólo cuando no está en modo silencioso
Estas opciones se encuentran por la ruta de acceso — Menú >> Configuración >> Sonido >> Vibrar — en el teléfono.
Es sencillo cambiar por navegación en el teléfono (por cierto, mi teléfono es un Motorola Atrix 2 con Android 2.3.3), pero todavía tengo que encontrar métodos para usar en mi código.
Código
Básicamente tengo botones que deben manipular los ajustes de vibración cuando se hace clic. Uno de estos botones se muestra aquí:
bSilent.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); Toast.makeText(getBaseContext(), "Set to Never", Toast.LENGTH_SHORT).show(); } });
audioManager se define en algún lugar por encima de este código como:
final AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
Android ofrece AudioManager.setVibrateSetting, pero ahora está obsoleto. En su lugar, hacen referencia al método getRingerMode.
Http://developer.android.com/reference/android/media/AudioManager.html
Sin embargo, el uso de estas funciones (y cualquier combinación de ellas) no se mueve eficientemente entre los cuatro ajustes de vibración. Por ejemplo, si empiezo en "Siempre", es aparentemente imposible para mí llegar a "Nunca". Todas las combinaciones de métodos de vibración sólo se mueven entre "Siempre" y "Sólo en modo silencioso". Por otro lado, si empiezo en "Nunca", los métodos ofrecidos solo cambiarán entre "Nunca" y "Sólo cuando no esté en modo silencioso".
Por lo tanto, supongamos que quiero tener mi teléfono en modo silencioso y quiero que vibre. Entonces, decido que no deseo que vibre más. No puedo cambiar de "Siempre" o "Sólo en modo silencioso" a "Nunca".
Soluciones y Puestos Pasados
Soy consciente de que se trata de una publicación duplicada en StackOverflow. La cuestión se ha planteado antes de …
Aquí: Configuración de Vibrar en Android 2.2
Y (más recientemente) aquí: Cambio de la configuración de vibración
El primero de los enlaces proporciona una "respuesta". LuTHieR termina en una discusión y finalmente descubre un camino por su cuenta. Él hace referencia al sitio:
Aplicaciones
y dice "Miré el código fuente de la clase com.android.settings.Settings y copié parte de los métodos que habilitan y desactivan vibrar".
Miré a través de este sitio vigorosamente y no pude encontrar lo que él hizo. ¿Podría alguien aclarar su solución?
Pregunta
¿Alguien tiene una manera de cambiar con precisión entre "Siempre", "Nunca", "Sólo en modo silencioso" y "Sólo cuando no está en modo silencioso"?
- Error de conexión: ECONNREFUSED
- Modificación de atributos anidados en un Layout incluido
- Cómo reemplazar el método a través del atajo de teclado en Android Studio
- Android: Reutilizar el mismo objeto de vista en diferentes actividades (el caso se trata de banners publicitarios)
- Icono de aplicación y icono de lanzador diferentes?
- Cómo determinar los permisos obsoletos?
- Icono de menú Confusión - ¡Son demasiado grandes!
- ¿Cómo obtener un evento táctil continuo?
Mi solución (trayectoria de la función con el ingreso String sParam
con el modo necesario del sistema de la vibración, refactoring si es necesario entero 0-3):
AudioManager audioManager = getSystemService( Context.AUDIO_SERVICE); if( Build.VERSION.SDK_INT < 16) { // sParam may be: // 0 - Always // 1 - Never // 2 - Only in silent mode (when sound is off) // 3 - Only when not in silent mode (when sound is on) if( (sParam.equals( "1") == true) || (sParam.equals( "3") == true)) { Settings.System.putInt( Static.contextApplication.getContentResolver(), "vibrate_in_silent", 0); if( sParam.equals( "1") == true) audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); if( sParam.equals( "3") == true) audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); } if( (sParam.equals( "0") == true) || (sParam.equals( "2") == true)) { Settings.System.putInt( Static.contextApplication.getContentResolver(), "vibrate_in_silent", 1); if( sParam.equals( "0") == true) audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); if( sParam.equals( "2") == true) audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); } } // else (for new SDK > 16 via setRingerMode() ??? )
- El widget de la pantalla de inicio de ICS aparece en el dispositivo Pre-ics
- ¿Qué significa 'aplicación MyApps'? – Facturación de Android en la aplicación