Jak mohu spravovat audio objemy zdravě ve své aplikaci pro Android?

hlasů
33

Mám aplikaci, která hraje nesouvislé zvuky, zatímco jeho aktivita je otevřená, a uživatel je vždy očekává to, aby se tyto zvuky, ale bohužel je omezena objemem proudu hudby. Možnosti Zjistil jsem, jsou tedy:

  1. Nastavit hlasitost hudebního streamu, případně ohlušující uživatele, pokud k nim dojde, že hraje hudbu v té době.
  2. Volejte MediaPlayer.setVolume (), který je neúčinné, pokud objem tohoto proudu hudby je 0.
  3. Tlačítko ovládání průtoku tlačí sám, který představuje dva problémy: Objem stisky tlačítek upravit hlasitost vyzvánění, pokud moje audio hraje, a byl jsem jak přesto schopna zachytit onkey událost pro tlačítka hlasitosti lisu s použitím mé OnKeyListener. Kdyby existoval nějaký způsob, jak přinutit úpravu aplikovat do hudebního proudu, zatímco moje činnost zaměřují nebo jen chytit tlačítko tlačí sám to bude fungovat.
  4. Hrají tichou opakování kus zvuk v pozadí, aby hudebního proudu v kontextu pro přizpůsobení hlasitosti.

Myslím, že třetí varianta je asi nejlepší, protože odstupuje regulovat hlasitost pro uživatele, ale kdyby existoval nějaký způsob, jak jen přepsat hlasitost systému v jediném MediaPlayer instanci, která by pracovala příliš.

Položena 10/03/2009 v 02:54
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
70

Dostal další podnět prostřednictvím Google Groups, které je platformou integrované řešení jsem hledal a funguje:

Prosím nezpracovává tlačítek pro ovládání hlasitosti se - je téměř nemožné zaručit, že nebudete zlomit chování tlačítek hlasitosti.

Volat toto rozhraní API v onCreate ():

setVolumeControlStream (AudioManager.STREAM_MUSIC);

Toto říká Audiomanager, že když vaše aplikace má fokus, ovládání hlasitosti měly Nastavení hlasitosti hudby.

Odpovězeno 23/03/2009 v 17:53
zdroj uživatelem

hlasů
2

Je užitečné tohoto API: setVolumeControlStream (AudioManager.STREAM_MUSIC);

Nestanoví-li tento budu trávit více času na opravu, že objem chybu.

Odpovězeno 13/04/2011 v 06:55
zdroj uživatelem

hlasů
1

Pokud používáte ‚OnKeyDown‘ metodu, můžete získat tento problém vyřešit tím, že dělá následující:

public boolean onKeyDown(int keyCode, KeyEvent event) {    
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                setVolumeControlStream(AudioManager.STREAM_MUSIC);}}
Odpovězeno 25/10/2015 v 10:08
zdroj uživatelem

hlasů
0

To vám nepomůže, pokud máte přepsat onKeyDown (int keycode, KeyEvent událost) způsob činnosti.

Odpovězeno 07/12/2011 v 13:45
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more