2012-09-02 7 views
1

J'ai commencé à lire Android pour les nuls et j'essaye de faire ma première application qui est Silent Mode Toggle.Android Silent Mode Toggle

Maintenant, le problème que je suis face est:

Dans la mise en page, je besoin de quelque chose comme un seul bouton devrait être là. Si le téléphone est en mode silencieux, le texte devrait indiquer «Mode silencieux activé» et lorsque le téléphone est en mode normal «Mode normal activé».

Il devrait demander à l'utilisateur qu'il/elle veuille activer le mode de vibration ou non.

Ci-dessous mon code:

XML Mise en page

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" >  

    <ImageView 
     android:id="@+id/phone_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="7dp" 
     android:src="@drawable/phone_on" /> 

    <Button 
     android:id="@+id/silent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_marginTop="35dp" 
     android:text="@string/silent_off" /> 

</LinearLayout> 

du code Java

public class MainActivity extends Activity { 
    private AudioManager mAudioManager; 
    private boolean mPhoneIsSilent; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     super.onCreate(savedInstanceState); 
     mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); 
     checkIfPhoneIsSilent(); 
     setButtonClickListener(); 
     Log.d("SilentModeApp", "This is a test"); 
    }  

    private void setButtonClickListener() { 
     Button toggleButton = (Button)findViewById(R.id.silent); 
     toggleButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if (mPhoneIsSilent) { 
        //change back to normal mode 
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
        mPhoneIsSilent = false; 
       } 
       else 
       { 
        //change to silent mode 
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); 
        mPhoneIsSilent = true; 
       } 
       // Now toggle the UI again 
       toggleUi(); 
      } 
     }); 
    } 

    private void checkIfPhoneIsSilent() { 
     int ringermode = mAudioManager.getRingerMode(); 
     if (ringermode == AudioManager.RINGER_MODE_SILENT) { 
      mPhoneIsSilent = true; 
     } 
     else 
     { 
      mPhoneIsSilent = false; 
     } 
    } 

    private void toggleUi() { 
     ImageView imageView = (ImageView) findViewById(R.id.phone_icon); 
     Drawable newPhoneImage; 
     if (mPhoneIsSilent){ 
      newPhoneImage = 
        getResources().getDrawable(R.drawable.phone_silent); 
     } 
     else 
     { 
      newPhoneImage = 
        getResources().getDrawable(R.drawable.phone_on); 

     } 
     imageView.setImageDrawable(newPhoneImage); 
    } 

    @Override  
    protected void onResume() { 
     super.onResume(); 
     checkIfPhoneIsSilent(); 
     toggleUi(); 
    } 
} 

Mise à jour

Maintenant, j'ai supprimé "mAudioManager.setRingerMode (AudioManager.RINGER_MODE_SILENT); "Et son passer en mode vibration du mode normal

J'ai besoin d'aide avec la chose mise en page

J'ai besoin 3 boutons et un texte d'état texte -.. Je sais comment créer des boutons et un message texte, ce que je ne savoir comment l'intégrer avec java

J'ai besoin si le téléphone est en mode normal, il devrait y avoir un message d'état ci-dessous l'image ci-dessus touches:. (XXX mode est activé) où XXX est silencieux, normal ou Vibrer

.

Si le téléphone est en mode normal, il ne devrait y avoir que 2 boutons: Passer en mode silencieux et Passer à la vibration mo de.

Et la même chose avec d'autres modes aussi.

+0

et le problème est? –

+1

Vous nous avez dit ce que vous voulez accomplir, vous avez fourni le code mais vous n'avez pas vraiment dit ce qui ne va pas. – Paul

+0

Rien ne va pas avec ce code. C'est entièrement fonctionnel. Je viens de supprimer cette ligne "mAudioManager.setRingerMode (AudioManager.RINGER_MODE_SILENT);" et maintenant son passage du mode normal au mode silencieux avec vibration. Donc, un problème résolu. –

Répondre

1

Il semble que vous vouliez un affichage de texte indiquant si le mode silencieux est/n'est pas activé? c'est-à-dire juste un petit peu de texte près d'un bouton, qui montre le statut? Et vos boutons apparaissent dynamiquement/disparaissent également?

TextView tv = (TextView)findviewbyid(R.id.relevanttextview); //text above button/wherever 
Button bt = (Button)findviewbyid(R.id.relevantbutton); //button to make appear/dissapear 

if(vibrate is on){ 
tv.setText("vibrate is on"); 
bt.setVisibility(View.VISIBLE); //make button appear 
} 

if(normal mode is on){ 
tv.setText("normal"); 
bt.setVisibility(View.INVISIBLE); //make button dissapear 
} 

etc ...

+0

Non, je veux autre chose. Je veux qu'il y ait au total 3 boutons en XML et 1 pour le mode normal, 1 pour le silencieux nd 1 pour le silence avec vibration. –

+0

Ensuite, définissez deux autres boutons dans votre fichier XML ...? –