Android audiomanager

O clasă are o mulțime de constante și metode, însă clasa însăși este ușor de folosit.

Utilizatorii pot auzi sunet prin difuzorul încorporat, un conector pentru căști cu fir, Bluetooth (audio A2DP). Puteți să stabiliți, prin intermediul AudioManager, unde se direcționează curentul audio și să efectuați anumite acțiuni, de exemplu, dezactivați sunetul:







Sistemul notifică prin intenția de difuzare ACTION_AUDIO_BECOMING_NOISY despre schimbarea sursei de sunet. Înregistrați BroadcastReceiver și ascultați intenția corectă.

În alte exemple, site-ul folosește și AudioManager.

Controlul volumului și al redării

Puteți controla volumul din aplicația dvs. utilizând controale hardware sau software pentru sunetul dispozitivului, casca bluetooth sau căști.

De asemenea, puteți controla redarea fluxului audio - pauză, oprire etc.

Android acceptă fluxuri audio separate pentru redarea muzicii, semnalul de alarmă, alertele, apelurile primite, sunetele sistemului, apelurile primite și tonurile DTMF. Utilizatorul poate controla volumul fiecărui flux separat.

În mod implicit, când apăsați tastele de volum, nivelul volumului fluxului audio activ se modifică. Dacă aplicația dvs. nu redă în prezent audio, atunci tastele de volum ajustează volumul tonului de sonerie apelat. Dacă aveți un joc sau o aplicație muzicală, atunci când utilizatorul apasă tastele de volum, vrea să schimbe volumul jocului sau al muzicii.

Metoda setVolumeControlStream () este utilizată pentru a accesa direct tastele de volum pentru fluxul audio pe care îl specificați. După ce ați determinat ce flux audio va folosi aplicația, trebuie să o setați ca fluxul audio de ieșire. Acesta este, de obicei, numit în metoda onCreate ().

În acest moment, apăsarea tastelor de volum de pe dispozitiv afectează fluxul audio specificat atunci când activitatea sau fragmentul este vizibil.

Pentru a procesa clicul unui buton media, trebuie să înregistrați BroadcastReceiver în fișierul manifest:

Implementarea receptorului însuși trebuie să preia tasta presată transmisă în alertă. Obiectul Intent include cheia EXTRA_KEY_EVENT. clasa KeyEvent include o listă a constantelor statice KEYCODE_MEDIA_ *. care conține toate butoanele media posibile, cum ar fi KEYCODE_MEDIA_PLAY_PAUSE și KEYCODE_MEDIA_NEXT.

Fragmentul următor prezintă modul de obținere a butonului media presat și modificarea redării media.

Deoarece mai multe aplicații se pot ocupa de apăsarea butoanelor media, trebuie să controlați programatic când aplicația dvs. ar trebui să primească apăsarea butoanelor. Următorul cod poate fi utilizat în aplicația dvs. pentru a vă înregistra și a anula înregistrarea receptorului evenimentului de la butoanele media folosind AudioManager.

De obicei, aplicațiile trebuie să dezactiveze receptoarele atunci când devin inactive sau invizibile. Cu toate acestea, nu este atât de simplu pentru aplicațiile care rulează multimedia - de fapt, răspunsul la presiunea butonului de redare este cel mai important când aplicația nu este vizibilă și, prin urmare, nu poate fi controlată de pe ecranul interfeței utilizator. Cea mai bună abordare este înregistrarea și dezabonarea receptorului evenimentului butonului media când aplicația primește și pierde focalizarea audio.







Controlul focalizării audio

Pentru a evita faptul că mai multe aplicații redă simultan un flux audio, sistemul folosește focalizarea audio pentru a controla modul de redare audio. Doar aplicația care are focalizare audio trebuie să redea sunetul. De aceea, tu trebuie să ai grijă ca cererea ta să solicite focalizare audio, precum și să poți determina momentul pierderii focalizării audio și să reacționezi în consecință.

Cererea de focalizare audio se face folosind metoda requestAudioFocus (). care returnează AUDIOFOCUS_REQUEST_GRANTED. dacă cererea a avut succes.

Trebuie să specificați fluxul pe care îl veți folosi și ce tip de focalizare audio doriți - temporar (tranzitoriu) sau permanent (permanent). Cereți o atenție temporară dacă vă așteptați să jucați audio pentru o perioadă scurtă de timp. La redarea muzicii, este preferabil să solicitați o focalizare audio permanentă.

Să solicităm o focalizare audio constantă în fluxul de muzică înainte de a începe redarea, de exemplu, atunci când utilizatorul apasă redarea sau muzica de fundal redată pentru a merge la nivelul următor al jocului.

Când aplicația a terminat de redat, trebuie să apelați metoda abandonAudioFocus (). Metoda va anunța sistemul că nu mai aveți nevoie de focalizare audio și anulează înregistrarea asociată cu AudioManager.OnAudioFocusChangeListener. Dacă focalizarea audio temporară este anulată, apelul va permite oricărei aplicații întrerupte să reia redarea.

Când solicitați o focalizare audio temporară, aveți o opțiune suplimentară: activați duck-ul. De obicei, atunci când o aplicație pierde focalizarea audio, aceasta întrerupe imediat redarea. Solicitând o focalizare audio temporară care permite mutarea, spuneți altor aplicații că pot continua să redea sunetul la un volum redus până când focalizarea este returnată acestora.

Mutarea este potrivită pentru aplicații care utilizează fluxuri audio la intervale, de exemplu, pentru a reproduce direcțiile în timp ce trasează traseul.

Aplicația dvs. poate pierde focalizare când o cere o altă aplicație. Redarea inversă a metodei onAudioFocusChange () a ascultătorului de schimbare a audiophile-ului pe care l-ați înregistrat cu solicitarea de focalizare audio primește un parametru care descrie evenimentul de schimbare a focalizării. În special, posibilele evenimente de pierdere a focalizării reflectă tipurile de solicitări de focalizare din secțiunea anterioară, pierderea permanentă, pierderea temporară și pierderea temporară cu mutarea.

Trebuie să continuați să monitorizați modificările focalizării și să fiți pregătit să reluați redarea de unde a fost suspendată, odată ce ați restabilit focalizarea.

Dacă pierderea focalizării audio este constantă, se presupune că la ora actuală este folosită o altă aplicație pentru a asculta sunetul, iar aplicația trebuie să se completeze în mod eficient.

În următoarea listă, vom întrerupe redarea dacă pierderea focalizării audio este temporară și o vom relua când vom relua focalizarea audio. Dacă pierderea este permanentă, anulează înregistrarea receptorului de evenimente pentru butoane și oprește monitorizarea modificărilor în focalizarea audio.

În cazul unei pierderi temporare a focalizării audio, în cazul în care se permite mutarea, puteți "face mai liniștit".

În exemplul următor, diminuăm volumul playerului media atunci când acesta pierde temporar focalizarea audio și apoi readuce volumul la nivelul anterior când se întoarce focalizarea.

Control microfon

Verificați dacă microfonul este oprit utilizând metoda isMicrophoneMute ():

Puteți activa sau dezactiva microfonul utilizând metoda setMicrophoneMute ():

Folosind difuzoarele

Metoda isSpeakerphoneOn () vă permite să stabiliți dacă muzica este redată prin difuzoare.

Treceți la difuzoare sau dezactivați-le folosind metoda setSpeakerphoneOn ():

Lectură suplimentară

Mod silențios - moduri de control Normal, Silențios, Vibrații.







Articole similare

Trimiteți-le prietenilor: