Ai đó có thể cho tôi mã mẫu để thay đổi âm lượng thông qua thanh trượt không? Tôi đã tìm kiếm và rất nhiều hướng dẫn đã nhắc tôi tạo một lớp hoàn toàn mới. Có cách nào dễ hơn không?tạo thanh trượt để thay đổi âm lượng Android?
Cảm ơn!
Ai đó có thể cho tôi mã mẫu để thay đổi âm lượng thông qua thanh trượt không? Tôi đã tìm kiếm và rất nhiều hướng dẫn đã nhắc tôi tạo một lớp hoàn toàn mới. Có cách nào dễ hơn không?tạo thanh trượt để thay đổi âm lượng Android?
Cảm ơn!
Thêm phần này vào OnCreate của bạn, bạn cần phải đặt seekbar của bạn vào file layout xml:
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
SeekBar volControl = (SeekBar)findViewById(R.id.volbar);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
Travis tại New Boston có một Video Tutorial lớn về vấn đề này ở đây: http://www.youtube.com/watch?v=8sr2Y6Aff6Y
Nguồn mã cho các hướng dẫn có thể được tìm thấy tại đây: http://www.mybringback.com/bringers/android/thenewboston-android-series/828/thenewboston-sample-projects/
Sáu năm sau, phiên bản thay đổi nhỏ này hoạt động cho tôi trong Android Studio 3.1. IDE cho biết tôi phải khai báo AudioManager final:
/* volume slider*/
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
SeekBar volControl = (SeekBar)findViewById(R.id.volControl);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
//end Volume slider
Làm cách nào để tôi thực hiện việc này nếu âm thanh của tôi bắt đầu ở nơi khác (tức là trong dịch vụ)? Tôi nhận được một NullPointerException trong onProgressChanged khi tôi cố gắng di chuyển thanh. – ShadowGod
Có lẽ bạn nên đặt câu hỏi này vào một câu hỏi riêng. Bạn có thể sẽ phải gọi vào dịch vụ của bạn để điều chỉnh âm lượng. –
Tôi hiểu. Cảm ơn Alan đã phản hồi nhanh! – ShadowGod