2012-06-19 1 views
7

Je fais l'application où le mode de téléphone passera du mode silencieux au mode de sonnerie si l'utilisateur envoie un sms avec un mot-clé spécifique. L'application fonctionne principalement lorsque l'utilisateur a perdu sa cellule quelque part dans la maison et son mode silencieux. Ma question principale est de savoir comment puis-je changer le mode de téléphone via le gestionnaire audio?Comment faire pour changer le mode vibreur à la sonnerie prgrammatically par le gestionnaire audio

Répondre

7

définir le mode SILENT en mode normal à l'aide AudioManager

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 

switch (am.getRingerMode()) { 
    case AudioManager.RINGER_MODE_SILENT: 
     Log.i("MyApp","Silent mode"); 
     am.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
     break; 
} 
2
AudioManager manager = (AudioManager) getContext().getSystemService(AUDIO_SERVICE); 
manager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
+0

& Vineet : Merci pour l'aide mais "getSystemServic e "est un indéfini, pouvez-vous me dire quoi faire avec ça ?? –

+0

'getSystemService' est une méthode de la classe' Context'. J'ai édité ma réponse. –

2

essayez ceci:

AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
+0

Merci les gars pour l'aide. Mais en fait j'ai obtenu ma solution de ceci: AudioManager audioManager = (AudioManager) context.getSystemService (Context.AUDIO_SERVICE); \t \t int maxVolume = audioManager.getStreamMaxVolume (AudioManager.STREAM_RING); \t \t audioManager.setRingerMode (AudioManager.RINGER_MODE_NORMAL); AudioManager.setStreamVolume (AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND) \t \t –

0

Pour le faire fonctionner pour les appareils Android pour et au-dessus Marshmallow (API 23)

  1. Dans AndroidManifest.xml définir la ACCESS_NOTIFICATION_POLICY permission

    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> 
    
  2. Dans votre demande fonction onResume/onCreate la permission sinon accordée

    @Override 
    protected void onResume() { 
        super.onResume(); 
        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
        //Check if the phone is running Marshmallow or above 
        if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) { 
         //If the permission is not granted, launch an inbuilt activity to grant permission 
         if (!nm.isNotificationPolicyAccessGranted()) { 
          startActivity(new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS)); 
         } 
        } 
    } 
    
  3. Enfin, pour changer appel en mode sonnerie cette méthode

    public void setRingerMode(Context context,int mode){ 
         /* 
         * mode variable value can be: 
         * AudioManager.RINGER_MODE_SILENT 
         * AudioManager.RINGER_MODE_NORMAL 
         * AudioManager.RINGER_MODE_VIBRATE 
         */ 
         NotificationManager nm = (NotificationManager)context.getSystemService(NOTIFICATION_SERVICE); 
         AudioManager audioManager = (AudioManager)context.getSystemService(AUDIO_SERVICE); 
         if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M && nm.isNotificationPolicyAccessGranted()) 
          audioManager.setRingerMode(mode); 
        } 
    
Questions connexes