Platforma Android oferă biblioteci pe care le puteți utiliza pentru streaming fișiere media, cum ar fi videoclipuri de la distanță, prezentându-le pentru redare în aplicațiile dvs. În acest tutorial, vom transmite un fișier video, care îl va afișa folosind VideoView
componentă împreună cu o MediaController
obiect pentru a permite utilizatorului controlul redării.
De asemenea, vom trece pe scurt procesul de prezentare a videoclipului folosind Media Player
clasă. Dacă ați terminat seria despre crearea unui player de muzică pentru Android, ați putea folosi ceea ce învățați în acest tutorial pentru ao îmbunătăți. Ar trebui să puteți completa acest tutorial dacă ați dezvoltat deja cel puțin câteva aplicații Android.
Dacă doriți o soluție gata făcută, verificați YoVideo, un șablon de aplicație Android pentru crearea unui frumos player video mobil pentru telefonul smartphone Android.
Utilizatorii pot viziona videoclipuri, pot urmări și distribui prietenilor lor pe Facebook. Utilizarea acestui șablon de aplicație vă va economisi bani și timp în crearea unei aplicații de partajare video.
YoVideo pe piața EnvatoSau puteți angaja un dezvoltator Android pentru a crea o soluție personalizată pentru dvs. În caz contrar, citiți-vă pentru instrucțiunile despre cum să faceți singur.
Puteți utiliza codul din acest tutorial pentru a îmbunătăți o aplicație existentă pe care lucrați sau puteți crea o aplicație nouă acum în Eclipse sau în Android Studio. Creați un nou proiect Android, dați-i un nume pe care îl alegeți, configurați detaliile și dați-i o denumire inițială principală Activitate
clasă și aspect.
Să facem mai întâi configurarea manifestului proiectului pentru media streaming. Deschideți fișierul manifest al proiectului și treceți la editarea XML în IDE. Pentru mediile de streaming, aveți nevoie de acces la internet, deci adăugați următoarea permisiune în interiorul manifesta
element:
VideoView
Platforma Android oferă VideoView
în care puteți reda fișiere video. Să adăugăm una în fișierul principal de aspect:
Modificați aspectul părinte pentru a se potrivi cu propria aplicație, dacă este necesar. Noi oferim VideoView
un exemplu id
astfel încât să ne putem referi mai târziu. Este posibil să trebuiască să ajustați celelalte proprietăți ale aspectului pentru propriul design.
Acum, să recuperăm o referință la VideoView
exemplu în cod. Deschideți aplicația principală Activitate
și adăugați următoarele importuri suplimentare:
importul android.net.Uri; import android.widget.MediaController; importă android.widget.VideoView;
Ta Activitate
ar trebui să conțină deja onCreate
metoda în care este setată vizualizarea conținutului:
@Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);
După setContentView
line, să luăm o referință la VideoView
exemplu după cum urmează, folosind id
am setat în aspectul XML:
VideoView vidView = (VideoView) findViewById (R.id.myVideo);
Acum putem transmite un fișier video către aplicație. Pregătiți URI pentru punctul final după cum urmează:
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (VidAdresa);
Veți avea nevoie, desigur, să utilizați adresa la distanță pentru fișierul video pe care doriți să îl transmiteți în flux. Exemplul de aici este un fișier video de domeniu public gazduit în Arhiva Internet. Noi analizăm șirul de adresă ca un URI, astfel încât să îl putem transfera la VideoView
obiect:
vidView.setVideoURI (vidUri);
Acum, puteți porni pur și simplu redarea:
vidView.start ();
Sistemul de operare Android suportă o gamă largă de formate video și media, fiecare suport acceptând adesea alte formate suplimentare.
După cum puteți vedea în Ghidul pentru dezvoltatori, formatele de fișiere video acceptate includ funcțiile 3GP, MP4, WEBM și MKV, în funcție de formatul utilizat și de nivelul de platformă instalat de utilizator.
Formatele de fișiere audio vă puteți aștepta la suportul încorporat pentru include MP3, MID, OGG și WAV. Puteți stream media pe Android prin RTSP, HTTP și HTTPS (din Android 3.1).
Am implementat redarea video, dar utilizatorul se va aștepta și va fi obișnuit să aibă control asupra acestuia. Din nou, platforma Android oferă resurse pentru manipularea acestui lucru folosind interacțiunea familiară prin MediaController
clasă.
În tine Activitate
clasa lui onCreate
înainte de linia pe care o apelați start
pe VideoView
, creați o instanță a clasei:
MediaController vidControl = nou MediaController (acest);
Apoi, setați-l să folosească VideoView
exemplu ca ancora:
vidControl.setAnchorView (vidView);
Și în final, setați-l ca controlor de media pentru VideoView
obiect:
vidView.setMediaController (vidControl);
Când rulați aplicația acum, utilizatorul ar trebui să poată controla redarea videoclipurilor streaming, inclusiv butoanele de redirecționare înainte și înapoi, un buton de redare / pauză și un buton de căutare a barei.
Comanda barei de căutare este însoțită de lungimea fișierului media din dreapta și de poziția curentă de redare din stânga. Pe lângă faptul că puteți atinge de-a lungul barei de căutare pentru a trece la o poziție din fișier, starea de streaming este indicată utilizând același tip de afișare pe care utilizatorul o va obișnui de la site-uri și aplicații cum ar fi YouTube.
Așa cum veți vedea când rulați aplicația, comportamentul implicit este ca controalele să dispară după câteva momente, reapărând când utilizatorul atinge ecranul. Puteți configura comportamentul MediaController
obiecte în diferite moduri. Consultați seria despre crearea unei aplicații pentru music player pentru Android, pentru a vedea cum se poate face acest lucru. De asemenea, puteți îmbunătăți redarea conținutului media implementând diferiți ascultători pentru a configura comportamentul aplicației.
Media Player
Înainte de a termina, să trecem printr-o abordare alternativă pentru streaming video folosind Media Player
clasa, deoarece am folosit-o în seria despre crearea unui music player. Puteți să redirecționați materiale media, inclusiv videoclipurile, la un Media Player
obiect folosind o vedere de suprafață. De exemplu, puteți utiliza următoarea structură:
Ne vom referi la SurfaceView
în punerea în aplicare a directivei Activitate
clasă.
În tine Activitate
clasă, adăugați următoarele interfețe:
clasa publică MainActivity se extinde Activitatea implementează SurfaceHolder.Callback, OnPreparedListener
IDE-ul dvs. vă va solicita să adăugați aceste metode neimplementate:
@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Stub de metoda generata automat @Overide public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO Metoda stub generată automat @Override publice void onPrepared (MediaPlayer mp) // începe redarea
Vom adăuga la surfaceCreated
și onPrepared
metode.
Pentru a implementa redarea, adăugați la clasă următoarele variabile de instanță:
mediaPlayer privat; privat SurfaceHolder vidHolder; privat SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
În Activitate
„s onCreate
, puteți începe apoi să instanțiați aceste variabile folosind SurfaceView
obiect pe care l-ați adăugat la aspect:
vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (aceasta);
În surfaceCreated
, configurați-vă resursele de redare media:
încercați mediaPlayer = MediaPlayer nou (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (aceasta); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); captură (Excepție e) e.printStackTrace ();
În cele din urmă, în onPrepared
, începeți redarea:
mediaPlayer.start ();
Videoclipul dvs. ar trebui să se joace acum în Media Player
atunci când rulați aplicația.
În acest tutorial, am subliniat elementele de bază ale streaming video pe Android folosind VideoView
și Media Player
clase. Ați putea adăuga o mulțime de îmbunătățiri la codul pe care l-am implementat aici, de exemplu, prin construirea de suporturi media sau streaming media în aplicația pentru music player creată de noi. De asemenea, vă recomandăm să verificați resursele asociate pentru Android, cum ar fi API-ul YouTube Android Player.