Как включить переключатель, если громкость звонка максимальная, и выключить переключатель, если громкость звонка меньше максимальной?

// устанавливаем переключатель громкости в положение ON

    swVolume.setChecked(true);

// подключаем прослушиватель для проверки изменений в состоянии

    swVolume.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
           }
    });

//проверяем текущее состояние перед отображением экрана

      if(swVolume.isChecked()){
            AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
            am.setStreamVolume(
                AudioManager.STREAM_RING,
                am.getStreamMaxVolume(AudioManager.STREAM_RING),
                0);       
      }
      else {
            swVolume.setChecked(false);
      } 

Может кто-нибудь сказать мне, почему я не могу добавить код if else в прослушиватель? и является ли функция слушателя только для просмотра состояния переключателя?

Я видел один пример в Интернете:

public class MainActivity extends Activity {


 private TextView switchStatus;
 private Switch mySwitch;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  switchStatus = (TextView) findViewById(R.id.switchStatus);
  mySwitch = (Switch) findViewById(R.id.mySwitch);

  //set the switch to ON 
  mySwitch.setChecked(true);
  //attach a listener to check for changes in state
  mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,
     boolean isChecked) {

но я действительно не знаю, почему мне нужно дважды вводить оператор if-else, потому что даже если я удалю оператор if-else здесь, код все еще работает нормально. Кто-нибудь может мне объяснить?

    if(isChecked){
     switchStatus.setText("Switch is currently ON");
    }else{
     switchStatus.setText("Switch is currently OFF");
    }

   }
  });

  //check the current state before we display the screen
  if(mySwitch.isChecked()){
   switchStatus.setText("Switch is currently ON");
  }
  else {
   switchStatus.setText("Switch is currently OFF");
  }
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
 }

} 

Большое спасибо. :)


person BEX    schedule 21.01.2017    source источник
comment
Что мешает поставить if-else в слушатель?   -  person Mike M.    schedule 21.01.2017
comment
код не будет работать, если я поставлю if-else в прослушиватель   -  person BEX    schedule 21.01.2017
comment
Я думаю, я не понимаю, что вы пытаетесь сделать. Вы хотите изменить громкость с помощью переключателя? Или просто использовать переключатель как индикатор громкости?   -  person Mike M.    schedule 21.01.2017
comment
Я хочу использовать его как индикатор громкости. Переключатель отключен. Пользователь не может изменить режим звонка, щелкнув переключатель, но я хочу обнаружить изменение, когда пользователь меняет громкость с помощью кнопок громкости телефона +/-. Это означает, что когда громкость не максимальная, переключатель автоматически выключается, но когда громкость достигает максимальной, переключатель включается.   -  person BEX    schedule 21.01.2017
comment
Тогда да, ваше последнее предположение верно. OnCheckedChangeListener вам в этом не поможет. Он срабатывает только при изменении состояния Switch.   -  person Mike M.    schedule 21.01.2017
comment
но мне все еще нужно это в моем коде, верно? Вы знаете, как обнаружить изменение?   -  person BEX    schedule 21.01.2017
comment
Давайте продолжим обсуждение в чате.   -  person BEX    schedule 21.01.2017
comment
Что ж, раньше вы могли сделать это с помощью ContentObserver в настройках системы - как показано в этом сообщении - но я Я не уверен, что это все еще работает. И нет, вам не обязательно нужен этот прослушиватель, если вы не разрешаете пользователю изменять Switch.   -  person Mike M.    schedule 21.01.2017
comment
Хорошо, спасибо большое, попробую позже. :)   -  person BEX    schedule 21.01.2017