android - registro - configuración de llamadas samsung
Cómo proporcionar vibración personalizada en llamadas entrantes específicas (1)
Debe jugar con dos configuraciones para que su teléfono vibre. El primero es el modo de sonido que debe configurarse utilizando AufioManager:
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);
La segunda parte no está bien documentada y creo que esta es la parte faltante de su código:
String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);
use 1 para activar la vibración y 0 para desactivar la vibración.
para comprender completamente cómo debe trabajar con la configuración y el modo de vibración, consulte el siguiente enlace: http://hi-android.info/src/com/android/settings/SoundSettings.java.html
El programa funciona de la siguiente manera: el usuario tiene una lista de números de teléfono, por lo que el teléfono celular podría vibrar en una llamada entrante solo cuando ninguna otra aplicación de todo el sistema proporcionaría vibración (como en el modo silencio). Sé que esto está de alguna manera en contra de las reglas, ya que una aplicación debe respetar la configuración de los usuarios, pero la aplicación está limitada a algunos usuarios con esta necesidad. He intentado de dos maneras pero ninguna de ellas es satisfactoria:
Escuche el estado de telefonía y active directamente el servicio de vibración con mi propio patrón (con
Vibrator.vibrate()
). Este método es efectivo sin llamadas entrantes, pero es aleatoriamente efectivo cuando el teléfono está en estadoCALL_STATE_RINGING
y supongo que es debido al conflicto con la aplicación de todo el sistema que realmente maneja la vibración en la llamada entrante.Juzgue si el teléfono está vibrando en una llamada entrante (con
AudioManager.shouldVibrate()
), y decida si desea cambiar la configuración de vibración (conAudioManager.setRingerMode()
yAudioManager.setVibrateSetting()
). Si mi aplicación cambia la configuración de vibración, se restaurarán una vez que el teléfono móvil vuelva al estadoCALL_STATE_IDLE
. Este método, sin embargo, todavía no funciona a veces, sin ningún signo de la razón.
Espero que alguien pueda dar algún consejo sobre este tema. Los comentarios sobre estas dos formas u otras sugerencias son bienvenidos.