2012-06-19 11 views
7

Estoy haciendo una aplicación donde el modo de teléfono cambia del modo silencioso al modo de timbre si el usuario envía un sms con una palabra clave específica. La aplicación funciona principalmente cuando el usuario pierde su celular en algún lugar de la casa y está en modo silencioso. Mi pregunta principal es ¿cómo puedo cambiar el modo del teléfono a través del administrador de audio?Cómo cambiar el modo de vibración a timbre de forma automática a través del administrador de audio

Respuesta

7

modo silencioso establecido en el modo normal usando 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

y Vineet : Gracias por la ayuda, pero "getSystemServic e "no está definido, ¿pueden decirme qué hacer con eso? –

+0

'getSystemService' es un método de la clase' Context'. Edité mi respuesta. –

2

intente esto:

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

Gracias chicos por la ayuda. Pero en realidad conseguí mi solución de este :: 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); \t \t audioManager.setStreamVolume (AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); –

0

Para hacer que funcione para dispositivos android para y por encima de malvavisco (API 23)

  1. En AndroidManifest.xml definir el ACCESS_NOTIFICATION_POLICY permiso

    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> 
    
  2. En su función onResume/onCreate pedir permiso si no se concede

    @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. Finalmente cambiar Ringer modo de llamada en este método

    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); 
        } 
    
Cuestiones relacionadas