2010-09-18 28 views
1

Je fais un vibreur widget de basculement (en fait, sa première version est déjà sur le marché), mais j'ai quelques problèmes avec les paramètres de vibreur d'Android 2.2.Vibreur paramètres sur Android 2.2

Jusqu'à Android 2.1 J'ai pas de problème, quand je veux désactiver vibrent je

am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); 
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF); 

et la même chose mais avec VIBRATE_SETTING_ON sur les deux lignes pour l'activer, et il fonctionne Allright.

Cependant, depuis Android 2.2 introduit "Vibreur uniquement en mode silencieux" et "Vibreur quand il n'est pas en mode silencieux", je ne sais pas comment le faire fonctionner. Lorsque le mode "Toujours" ou "Jamais" est activé, il n'y a pas de problème, mais dès que l'utilisateur le définit manuellement sur l'un des deux autres paramètres, l'application commence à faire des choses étranges. Par exemple, si je l'ai réglé sur "vibrer seulement en mode silencieux" et que je désactive la vibration via mon widget, il s'éteint, mais quand je le rallume ... il revient à "seulement dans mode silencieux "au lieu de" Toujours ". En fait, il n'y a aucun moyen de le remettre à "Toujours" sauf si vous le faites via Paramètres -> Son, donc je suppose que la combobox pour le mode vibreur fait quelque chose d'autre que je ne connais pas. C'est comme si elle stockait la valeur ailleurs, car même si je la définissais manuellement sur "Toujours", si je la désactivais et l'activais à nouveau via le widget (avec le code que j'avais posté auparavant), elle revenait à "Vibreur uniquement en mode silencieux ". De plus, il y a une valeur dans la classe AudioManager pour "Only in silent mode" (VIBRATE_SETTING_ONLY_SILENT) mais quand vous le réglez sur "Only when not in silent mode" il utilise VIBRATE_SETTING_ON, donc il n'y a aucun moyen de le détecter (pas que je sache, je veux dire).

J'espère que je n'ai pas été trop confus, mais je voulais donner toutes les données possibles. Et avec tout cet ensemble ...

Est-ce que quelqu'un sait comment gérer correctement les réglages de vibration en 2.2? Y a-t-il une autre variable que je dois définir ou que je dois appeler pour désactiver ou activer complètement le vibreur? Ou un moyen de "réinitialiser" le téléphone à un état connu afin que cela fonctionne bien?

Les étapes pour reproduire le problème (ou, au moins, l'un des problèmes) sont les suivants:

  • Set vibrent « seulement en mode silencieux » via le menu des paramètres.

  • Set vibrent à "jamais" via le widget:

    setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);

  • Vérifiez dans le menu des paramètres qui vibrent est réglé sur "jamais".

  • Set vibrent à "toujours" via le widget:

    setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);

  • Allez dans le menu Paramètres -> Vibrer est réglé sur "Seulement en mode silencieux"

Répondre

9

je dû désordre avec ces paramètres moi-même quand une application foiré les paramètres individuels de mon Nexus One.Ici, ils sont:

vibrent toujours sur la bague:

setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); 

Jamais vibrent sur la bague:

setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); 

Vibrer sur l'anneau que dans le silence:

setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 

vibrent toujours sur Notify:

setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); 

Jamais vibrent sur notify:

setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); 

Vibrer en aviser que dans le silence:

setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ONLY_SILENT); 

Change ringer mode:

AudioManager.setRingerMode (RINGER_MODE_NORMAL); AudioManager.setRingerMode (RINGER_MODE_SILENT); AudioManager.setRingerMode (RINGER_MODE_VIBRATE);

Les paramètres de vibration sont indépendants des paramètres de sonnerie. La confusion s'ensuit.

+0

Merci magaio, mais j'ai toujours le problème ... J'ai ajouté les étapes pour reproduire le problème dans la question. – LuTHieR

+0

LuTHieR, vous avez probablement besoin d'utiliser une combinaison de réglage du paramètre de vibration, mais aussi du réglage de la sonnerie. C'est confus, je sais. L'application Paramètres Android est en train de changer le réglage de la sonnerie (voir ma modification au bas de la réponse). Si vous voulez un vrai jamais vibreur, vous devez régler VibrateSetting (... VIBRATE_SETTING_OFF) et setRingerMode (... RINGER_MODE_NORMAL). Essayez ça. – magaio

+0

Merci encore une fois, je vais essayer cet après-midi quand je rentre à la maison et vous dire si cela a fonctionné :) – LuTHieR