Pregunta

El programa funciona como esta: el usuario tiene una lista de números de teléfono, para los cuales 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 modo silencio). Sé que esto está de alguna manera en contra de las reglas, ya que una aplicación debería respetar la configuración de los usuarios, pero la aplicación se limita a ciertos usuarios con esta necesidad. He probado dos maneras pero ninguno de ellos es satisfactorio:

  1. 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 al azar efectiva cuando el teléfono está en CALL_STATE_RINGING Estado y supongo que se debe al conflicto con la aplicación de todo el sistema que en realidad maneja la vibración en la llamada entrante.

  2. Juzgar si el teléfono celular está vibrando en una llamada entrante (con AudioManager.shouldVibrate()), y decida si cambiar la configuración de vibración (con AudioManager.setRingerMode() y AudioManager.setVibrateSetting()). Si mi aplicación cambia la configuración de vibración, se deben restaurar una vez que el teléfono celular vuelva a CALL_STATE_IDLE estado. Sin embargo, este método todavía no funciona a veces, sin ningún signo de la razón.

Espero que alguien pueda dar algunos consejos sobre este tema. Los comentarios sobre estas dos formas u otras sugieren son bienvenidos.

¿Fue útil?

Solución

Debe jugar con dos configuraciones para que su teléfono vibre. El primero es el modo de sonido que debe establecerse utilizando Aufiomanager:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);

La segunda parte no está documentada correctamente y creo que esta es la parte que falta 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 encender vibrar y 0 para apagar la vibración.

Para comprender completamente cómo debe trabajar con la configuración y el modo Vibrate, eche un vistazo al siguiente enlace:http://hi-antroid.info/src/com/android/settings/soundsettings.java.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top