Comment fournir des vibrations sur mesure pour les appels entrants spécifiques
-
25-10-2019 - |
Question
Les fonctions du programme comme celui-ci: l'utilisateur dispose d'une liste de numéros de téléphone, pour lesquels le téléphone portable pourrait vibrer lors d'un appel entrant uniquement lorsque aucune autre application du système à l'échelle fournirait des vibrations (comme en mode muet). Je sais que cela est en quelque sorte contre les règles, pour qu'une application doit respecter les paramètres des utilisateurs, mais l'application est limitée à certains certains utilisateurs avec ce besoin. J'ai essayé deux façons, mais aucun d'entre eux sont satisfaisant:
-
Écoutez l'état de la téléphonie et de déclencher directement le service de vibration avec mon propre modèle (avec
Vibrator.vibrate()
). Cette méthode est efficace sans appel entrant encore au hasard efficace lorsque le téléphone est en étatCALL_STATE_RINGING
et je suppose qu'il est à cause du conflit avec l'application du système à l'échelle qui gère en fait la vibration sur appel entrant. -
juge si le téléphone vibre lors d'un appel entrant (avec
AudioManager.shouldVibrate()
), et décider de modifier les paramètres vibrent (avecAudioManager.setRingerMode()
etAudioManager.setVibrateSetting()
). Si les paramètres sont modifiés par vibrent ma demande, ils doivent être restaurés une fois que le téléphone portable est de retour à l'état deCALL_STATE_IDLE
. Cette méthode, cependant, ne fonctionne toujours pas parfois, sans aucun signe de la raison.
J'espère que quelqu'un pourrait donner quelques conseils à ce sujet. Commentaires sur ces deux façons ou d'autres suggèrent sont les bienvenus.
La solution
Vous devez jouer avec deux réglages pour que votre téléphone vibre. Le premier est le mode sonore qui doit être réglé à l'aide de AufioManager:
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);
La seconde partie est mal documenté et je crois que c'est la partie manquante de votre code:
String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);
1 'utilisation pour activer le vibreur et 0 pour désactiver vibrer.
pour bien comprendre comment vous devez travailler avec des paramètres du vibreur et le mode jeter un oeil sur le lien suivant: http://hi-android.info/src/com/android /settings/SoundSettings.java.html