2011-06-11 2 views
0

Est-il possible de désactiver la sonnerie d'appel en raison d'un appel entrant?Désactiver le silence par programmation

Je suis en mesure de changer le téléphone en mode normal et de régler le volume de la sonnerie, mais parce que le téléphone était silencieux auparavant, il ne commence pas à sonner après avoir changé les réglages. Ce que je fais est, quand le téléphone est en mode silencieux et je reçois un appel entrant, basé sur certaines conditions que je veux que le téléphone sonne réellement. Comme je l'ai mentionné, j'ai modifié les paramètres ok, donc si je reçois un appel ultérieur, la sonnerie fonctionne, mais l'appel initial (qui a déclenché le changement de réglages) continue de sonner en mode silencieux ... Y at-il un façon de (après avoir réglé les modes de sonnerie) pour forcer le téléphone à "sonner" avec les nouveaux paramètres à nouveau ???

Mise à jour:

J'ai mis la sonnerie silencieuse et mis à sonner au maximum volumne en utilisant les éléments suivants:

 AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); 

    int origionalVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING); 
    int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING); 

    mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
    mAudioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 

Je peux voir dans les journaux que lorsque la sonnerie est en train de jouer, il se déconnecte:

06-13 19:22:33.984: DEBUG/CallNotifier(126): RINGING... (new) 
06-13 19:22:33.984: DEBUG/CallNotifier(126): onNewRingingConnection(): incoming: true state: INCOMING post dial state: NOT_STARTED 
06-13 19:22:34.094: INFO/ActivityManager(59): Start proc android.process.acore for content provider com.android.providers.contacts/.ContactsProvider2: pid=294 uid=10000 gids={3003, 1015} 
06-13 19:22:34.444: INFO/ActivityThread(294): Publishing provider com.android.social: com.android.providers.contacts.SocialProvider 
06-13 19:22:34.494: INFO/ActivityThread(294): Publishing provider applications: com.android.providers.applications.ApplicationsProvider 
06-13 19:22:34.594: WARN/CallNotifier(126): CallerInfo query took too long; manually starting ringer 
06-13 19:22:34.594: WARN/CallNotifier(126): CallerInfo query took too long; falling back to default ringtone 
06-13 19:22:34.594: DEBUG/Ringer(126): ring()... 
06-13 19:22:34.664: INFO/ActivityManager(59): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=301 uid=1000 gids={3002, 3001, 3003} 
06-13 19:22:34.684: DEBUG/Ringer(126): mRingHandler: PLAY_RING_ONCE... 
06-13 19:22:34.684: DEBUG/Ringer(126): creating ringtone: content://settings/system/ringtone 
06-13 19:22:34.734: INFO/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN flg=0x10840000 cmp=com.android.phone/.InCallScreen } 
06-13 19:22:35.374: DEBUG/InCallScreen(126): onCreate()... this = [email protected] 
06-13 19:22:35.504: INFO/ActivityThread(294): Publishing provider contacts;com.android.contacts: com.android.providers.contacts.ContactsProvider2 
06-13 19:22:36.184: DEBUG/AudioHardwareInterface(34): setMode(RINGTONE) 

Existe-t-il un moyen d'appeler ces fonctions manuellement?

Répondre

0

Lors de l'appel du téléphone, votre application commence à lire la sonnerie par défaut. Kind hacky though

+0

C'est une possibilité, mais comme vous le dites hacky, donc je ne veux pas le faire à moins que ce soit un dernier recours. Si je fais cela, je devrais probablement suivre l'état de l'appel et arrêter de jouer le son lorsque les appels ont répondu, etc, merci pour la suggestion tho. – FireEnigmaX

+0

Cependant juste logique, je pense que c'est la seule option. Lorsque le système reçoit l'appel et transmet l'événement aux applications que je suppose déjà le mode de notification est défini et par conséquent cet appel sera silencieux. L'application est en marche après tout ce qui est arrivé. – yoshi

0

Je pense que vous pouvez faire un récepteur de diffusion qui détecte l'appel entrant, Donc, dans sa méthode onReceive, vous pouvez modifier les paramètres de votre téléphone, donc ces paramètres prendront des effets dès que vous avez reçu l'appel.

Espérons que ce travail.

0

Découvrez le guide de développement comment l'utiliser pour changer dynamiquement les types de sonnerie dans votre application.

Questions connexes