Czy ktoś może podać mi przykładowy kod do zmiany głośności za pomocą suwaka? Szukałem i wiele tutoriali wymagało ode mnie stworzenia zupełnie nowej klasy. Czy istnieje prostszy sposób?utworzyć suwak, aby zmienić głośność Androida?
Dzięki!
Czy ktoś może podać mi przykładowy kod do zmiany głośności za pomocą suwaka? Szukałem i wiele tutoriali wymagało ode mnie stworzenia zupełnie nowej klasy. Czy istnieje prostszy sposób?utworzyć suwak, aby zmienić głośność Androida?
Dzięki!
Dodaj to do swojej onCreate, trzeba umieścić SeekBar do pliku układ 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 w New Boston ma wielką Video Tutorial o tym tutaj: http://www.youtube.com/watch?v=8sr2Y6Aff6Y
Źródło kod do tutoriali można znaleźć tutaj: http://www.mybringback.com/bringers/android/thenewboston-android-series/828/thenewboston-sample-projects/
Sześć lat później ta nieznacznie zmieniona wersja działa dla mnie w Android Studio 3.1. IDE powiedział, że muszę zadeklarować finał AudioManager:
/* 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
Jak to zrobić, jeśli dźwięk zaczyna się w innym miejscu (np. W usłudze)? Otrzymuję NullPointerException w onProgressChanged, gdy próbuję przenieść pasek. – ShadowGod
Powinieneś prawdopodobnie umieścić to w osobnym pytaniu. Prawdopodobnie będziesz musiał zadzwonić do swojej usługi, aby dostosować głośność. –
Rozumiem. Dzięki Alan za szybką reakcję! – ShadowGod