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:

  1. É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 état CALL_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.

  2. juge si le téléphone vibre lors d'un appel entrant (avec AudioManager.shouldVibrate()), et décider de modifier les paramètres vibrent (avec AudioManager.setRingerMode() et AudioManager.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 de CALL_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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top