2016-02-15 2 views
-3

Je veux développer une application pour basculer l'état audio de l'appareil. Si l'état audio est silencieux alors le texte de mon bouton doit être « silencieuse », s'il est normal que le texte devrait être « normal »Comment vérifier toujours une condition dans Android?

Voici ma seule classe:

public class MainActivity extends ActionBarActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final Button btn1= (Button) findViewById(R.id.btn1); 
    final AudioManager audio = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 

    if (audio.getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
    { 
     btn1.setText("Normal"); 
    } 
    else if (audio.getRingerMode()==AudioManager.RINGER_MODE_SILENT) 
    { 
     btn1.setText("Silent"); 
    } 

    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      btn1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        if (audio.getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
        { 
         audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
         btn1.setText("Silent"); 
        } 
        else if (audio.getRingerMode()==AudioManager.RINGER_MODE_SILENT) 
        { 
         audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
         btn1.setText("Normal"); 
        } 
             } 
      }); 
     } 
    }); 

Comment puis-je toujours vérifier cette condition dans Android?

+0

Quel est le problème que vous rencontrez? Il semble que cela devrait fonctionner correctement. –

+0

@BenjaminLowry mon problème est que si l'utilisateur change audio le texte du bouton ne change pas jusqu'à ce que le bouton pressé, je veux changer immédiatement le texte du bouton – Hossein

+0

Oh, je vois votre problème. –

Répondre

1

Si vous avez besoin pour obtenir le mode de sonnerie actuelle, même si elle a été modifiée en dehors de votre contexte d'application, alors vous devez vous inscrire un BroadcastReceiver pour AudioManager.RINGER_MODE_CHANGED_ACTION.

Ce récepteur sera appelé chaque fois que quelqu'un changera le mode de sonnerie.

Pour ce faire, entrez onCreate.

BroadcastReceiver receiver=new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
      if (audio.getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
      { 
       btn1.setText("Silent"); 
      } 
      else if (audio.getRingerMode()==AudioManager.RINGER_MODE_SILENT) 
      { 
       btn1.setText("Normal"); 
      } 
    } 
}; 

IntentFilter filter=new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); 
registerReceiver(receiver,filter); 
+1

Merci pour votre helppppp, cela fonctionne correctement – Hossein

0

Il suffit de faire ce

btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (audio.getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
     { 
      audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
      btn1.setText("Silent"); 
     } 
     else if (audio.getRingerMode()==AudioManager.RINGER_MODE_SILENT) 
     { 
      audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
      btn1.setText("Normal"); 
     } 
    } 
}); 

ce que vous faites est

btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     btn1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (audio.getRingerMode()==AudioManager.RINGER_MODE_NORMAL) 
       { 
        audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
        btn1.setText("Silent"); 
       } 
       else if (audio.getRingerMode()==AudioManager.RINGER_MODE_SILENT) 
       { 
        audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        btn1.setText("Normal"); 
       } 
      } 
     }); 
    } 
}); 
+0

pls expliquent que pour moi – Hossein

+0

Vous avez imbriqué 'onClickListener', supprimer cette imbrication. – Rohit5k2

+0

son ok mais ma question est une autre chose je veux vérifier silencieux/normal toujours dans mon application et avec le changement à ce statut, changer le texte du bouton automatiquement ... @ Rohit5k2 – Hossein