如何在Android中始终检查条件?

时间:2016-02-15 13:46:34

标签: java android audio android-studio silent

我想开发一款应用来切换设备的音频状态。如果音频状态是静音的,那么我的按钮的文字应该是静音"如果正常则文本应该是"正常"

这是我唯一的课程:

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");
                    }
                                      }
            });
        }
    });

如何在Android中始终检查此情况?

2 个答案:

答案 0 :(得分:1)

如果您需要获取当前铃声的模式,即使它已在您的应用程序上下文之外进行了更改,那么您应该为BroadcastReceiver注册AudioManager.RINGER_MODE_CHANGED_ACTION

每当有人改变振铃模式时,都会调用此接收器。

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 :(得分:0)

就这样做

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");
        }
    }
});

你在做什么

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");
                }
             }
        });
    }
});