반응형
Seekbar로 안드로이드 기기 미디어 소리 조절
AndroidManifest.xml
<!-- 음량 조절 권한 -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
layout xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<SeekBar
android:id="@+id/volumeSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:max="100"
android:progress="50" />
<Button
android:id="@+id/decreaseVolumeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:textSize="20sp"
android:layout_alignParentStart="true"
android:layout_marginStart="16dp"
android:layout_alignBaseline="@id/volumeSeekBar"
android:onClick="decreaseVolumeClick" />
<Button
android:id="@+id/increaseVolumeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="20sp"
android:layout_alignParentEnd="true"
android:layout_marginEnd="16dp"
android:layout_alignBaseline="@id/volumeSeekBar"
android:onClick="increaseVolumeClick" />
</RelativeLayout>
Seekbar 레이아웃 커스텀 참조
https://overpay.tistory.com/53
VolumeControlUtils.java
public class VolumeControlUtils {
private SeekBar volumeSeekBar;
private Button decreaseButton;
private Button increaseButton;
private AudioManager audioManager;
/**
* VolumeControlUtils 클래스의 생성자입니다.
* @param volumeSeekBar SeekBar 객체
* @param decreaseButton 볼륨 감소 버튼
* @param increaseButton 볼륨 증가 버튼
* @param activity 액티비티 객체
*/
public VolumeControlUtils(SeekBar volumeSeekBar, Button decreaseButton, Button increaseButton, Activity activity) {
this.volumeSeekBar = volumeSeekBar;
this.decreaseButton = decreaseButton;
this.increaseButton = increaseButton;
this.audioManager = (AudioManager) activity.getSystemService(Activity.AUDIO_SERVICE);
initializeVolumeSeekBar();
setButtonClickListeners();
setSeekBarChangeListener();
}
/**
* SeekBar를 초기화하고 현재 볼륨 값을 설정합니다.
*/
private void initializeVolumeSeekBar() {
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
volumeSeekBar.setMax(maxVolume);
volumeSeekBar.setProgress(currentVolume);
}
/**
* 볼륨 감소 버튼과 볼륨 증가 버튼의 클릭 리스너를 설정합니다.
*/
private void setButtonClickListeners() {
decreaseButton.setOnClickListener(view -> decreaseVolume());
increaseButton.setOnClickListener(view -> increaseVolume());
}
/**
* 볼륨을 감소시키고 SeekBar의 값도 업데이트합니다.
*/
private void decreaseVolume() {
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
if (currentVolume > 0) {
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0);
volumeSeekBar.setProgress(currentVolume - 1);
}
}
/**
* 볼륨을 증가시키고 SeekBar의 값도 업데이트합니다.
*/
private void increaseVolume() {
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
if (currentVolume < maxVolume) {
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0);
volumeSeekBar.setProgress(currentVolume + 1);
}
}
/**
* SeekBar의 상태가 변경될 때 볼륨을 설정합니다.
*/
private void setSeekBarChangeListener() {
volumeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 사용자가 SeekBar 값을 변경할 때 볼륨을 설정합니다.
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 사용자가 SeekBar를 터치하여 드래그를 시작할 때 호출됩니다.
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 사용자가 SeekBar 터치를 끝내고 드래그를 멈출 때 호출됩니다.
}
});
}
}
activity.java
public class SettingVolumeActivity extends AppCompatActivity {
ActivitySettingVolumeBinding binding;
private VolumeControlUtils volumeControlUtils;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_setting_volume);
// VolumeControlUtils 클래스를 사용하여 볼륨 조절 기능 초기화
volumeControlUtils = new VolumeControlUtils(binding.volumeSeekBar, binding.decreaseVolumeButton, binding.increaseVolumeButton, this);
}
}
반응형
'개발 > ANDROID 안드로이드' 카테고리의 다른 글
Android Java 설치된 스토어를 확인하여 업데이트 하기 (0) | 2023.08.02 |
---|---|
Android Java 설치된 스토어 구분 (0) | 2023.08.02 |
Android Java Seekbar 화면 밝기 조절 (0) | 2023.07.25 |
Java 티맵 내비 호출 및 경로 안내 (0) | 2023.07.25 |
Java KT 원 내비 호출 및 경로 안내 (0) | 2023.07.21 |