Android
0
Вклад в тег
<ImageView
android:id="@+id/stop_sound"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/sound_on"
/>
<ImageView
android:id="@+id/play_sound"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/sound_off"
/>
private ImageView MUTE_btn; // Кнопка MUTE (уменьшения громкости до нуля во всем приложении)
private ImageView UNMUTE_btn; // Кнопка UNMUTE (увеличения громкости почти до max во всем приложении)
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Кнопка при нажатии, на которую громкость в приложении станет НУЛЕВОЙ (MUTE_btn).
// Сама кнопка станет невидимой, а ВИДИМОЙ станет кнопка ВКЛючения звука (UNMUTE_btn).
MUTE_btn = (ImageView)this.findViewById(R.id.stop_sound);
MUTE_btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
MUTE_btn.setVisibility(View.INVISIBLE);
UNMUTE_btn.setVisibility(View.VISIBLE);
}
});
// Кнопка при нажатии, на которую громкость в приложеии станет почти MAX (UNMUTE_btn).
// Сама кнопка станет невидимой, а ВИДИМОЙ станет кнопка ВЫКЛючения звука (MUTE_btn).
UNMUTE_btn = (ImageView)this.findViewById(R.id.play_sound);
UNMUTE_btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 90, 90);
MUTE_btn.setVisibility(View.VISIBLE);
UNMUTE_btn.setVisibility(View.INVISIBLE);
}
});
// Установка видимости соответствующих кнопок при запуске Activity
int app_volume;
AudioManager audioManager2 = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
app_volume = audioManager2.getStreamVolume(AudioManager.STREAM_MUSIC); // вот тут у меня и была ошибка
if(app_volume == 0){
MUTE_btn.setVisibility(View.INVISIBLE);
UNMUTE_btn.setVisibility(View.VISIBLE);
}
else{
MUTE_btn.setVisibility(View.VISIBLE);
UNMUTE_btn.setVisibility(View.INVISIBLE);
}
}
// А теперь займемся аппаратными кнопками volume_up и volume_down
@Override
public boolean onKeyUp(int keyCode, KeyEvent event){
// при нажатии на кнопку громкости вверх, смена видимости соответствующих кнопок
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
MUTE_btn.setVisibility(View.VISIBLE);
UNMUTE_btn.setVisibility(View.INVISIBLE);
return true;
}
// при нажатии на кнопку громкости вниз, смена видимости соответствующих кнопок
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
// заметьте, тот же код, что и в методе on Create, т.к. необходимо, чтобы фон кнопки менялся только
// при достижении нулевого уровня громкости
int app_volume;
AudioManager audioManager2 = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
app_volume = audioManager2.getStreamVolume(AudioManager.STREAM_MUSIC);
if(app_volume == 0){
MUTE_btn.setVisibility(View.INVISIBLE);
UNMUTE_btn.setVisibility(View.VISIBLE);
}
else{
MUTE_btn.setVisibility(View.VISIBLE);
UNMUTE_btn.setVisibility(View.INVISIBLE);
};
return true;
}
}