Android-plattformen inneholder biblioteker du kan bruke til å streame mediefiler, for eksempel fjernvideoer, og presentere dem for avspilling i appene dine. I denne veiledningen vil vi streame en videofil, vise den ved hjelp av VideoView
komponent sammen med a MediaController
motsette seg at brukeren kontrollerer avspillingen.
Vi vil også kort gå gjennom prosessen med å presentere videoen ved hjelp av Mediaspiller
klasse. Hvis du har fullført serien om å lage en musikkspiller for Android, kan du bruke det du lærer i denne opplæringen for å forbedre den ytterligere. Du bør kunne fullføre denne opplæringen hvis du allerede har utviklet minst noen Android-apper.
Hvis du vil ha en ferdig løsning, sjekk ut YoVideo, en Android-appmal for å skape en vakker mobilvideospiller for Android-smarttelefonen..
Brukere kan se videoer, følge og dele med vennene sine på Facebook. Ved å bruke denne programmalen sparer du penger og tid når du lager et videodelingsprogram.
YoVideo på Envato MarketEller du kan ansette en Android-utvikler for å skape en tilpasset løsning for deg. Ellers les videre for instruksjonene om hvordan du gjør det selv.
Du kan bruke koden i denne opplæringen til å forbedre en eksisterende app du jobber med, eller du kan opprette en ny app nå i Eclipse eller Android Studio. Opprett et nytt Android-prosjekt, gi det et navn etter eget valg, konfigurer detaljene, og gi det en første hoved Aktivitet
klasse og layout.
La oss først konfigurere prosjektets manifest for streaming media. Åpne manifestfilen til prosjektet ditt og bytt til XML-redigering i IDE-en. For streaming media trenger du internettilgang, så legg til følgende tillatelse inne i manifest
element:
VideoView
Android-plattformen gir VideoView
klassen der du kan spille av videofiler. La oss legge til en til hovedlayoutfilen:
Endre overordnet layout for å passe din egen app om nødvendig. Vi gir VideoView
eksempel en id
attributt slik at vi senere kan referere til det. Du må kanskje justere de andre layoutegenskapene for ditt eget design.
La oss nå hente en referanse til VideoView
forekomst i kode. Åpne appens hoved Aktivitet
klasse og legg til følgende tilleggsimport:
importer android.net.Uri; importer android.widget.MediaController; importer android.widget.VideoView;
Din Aktivitet
klassen bør allerede inneholde onCreate
Metode der innholdsvisningen er innstilt:
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);
Etter setContentView
linje, la oss få en referanse til VideoView
forekommer som følger, ved hjelp av id
vi setter i XML-oppsettet:
VideoView vidView = (VideoView) findViewById (R.id.myVideo);
Nå kan vi streame en videofil til appen. Klargjør URI for sluttpunktet som følger:
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (vidAddress);
Du må selvfølgelig bruke fjernadressen til videofilen du vil streame. Eksemplet her er en offentlig domene videofil vert på Internett-arkivet. Vi analyserer adressestrengen som en URI, slik at vi kan sende den til VideoView
gjenstand:
vidView.setVideoURI (vidUri);
Nå kan du bare starte avspillingen:
vidView.start ();
Android-operativsystemet støtter en rekke video- og medieformater, hvor hver enhet ofte støtter flere formater på toppen av dette.
Som du kan se i utviklerveiledningen, støttes videofilformater som 3GP, MP4, WEBM og MKV, avhengig av formatet som brukes og på hvilket plattformnivå brukeren har installert.
Lydfilformater du kan forvente innebygd støtte for, inkluderer MP3, MID, OGG og WAV. Du kan streame media på Android over RTSP, HTTP og HTTPS (fra Android 3.1).
Vi har implementert videoavspilling, men brukeren vil forvente og være vant til å ha kontroll over det. Igjen, tilbyr Android-plattformen ressurser for å håndtere dette ved hjelp av kjent interaksjon via MediaController
klasse.
I din Aktivitet
klassens onCreate
metode, før linjen du ringer til start
på VideoView
, opprett en forekomst av klassen:
MediaController vidControl = ny MediaController (dette);
Deretter sett den til å bruke VideoView
eksempel som anker:
vidControl.setAnchorView (vidView);
Og til slutt, sett det som mediekontrolleren for VideoView
gjenstand:
vidView.setMediaController (vidControl);
Når du kjører appen nå, skal brukeren kunne styre avspillingen av streamingvideoen, inkludert hurtigspoling og spoling av knapper, en avspilling / pause-knapp og en søkestangskontroll.
Søkebjelkens kontroll er ledsaget av lengden på mediefilen til høyre og gjeldende avspillingsposisjon til venstre. I tillegg til å kunne trykke langs søylinjen for å hoppe til en posisjon i filen, er streamingstatus angitt med samme type skjerm som brukeren vil være vant til fra nettsteder og apper som YouTube.
Som du vil se når du kjører appen, er standard oppførsel at kontrollene forsvinner etter noen få øyeblikk, dukker opp igjen når brukeren berører skjermen. Du kan konfigurere oppførselen til MediaController
objekt på ulike måter. Se serien om å lage en musikkavspillingsapp for Android for et eksempel på hvordan du gjør dette. Du kan også forbedre medieavspillingen ved å implementere ulike lyttere for å konfigurere appens oppførsel.
Mediaspiller
Før vi er ferdige, la oss gjennomgå en alternativ tilnærming for streaming av video ved hjelp av Mediaspiller
klassen, siden vi brukte den i serien om å skape en musikkspiller. Du kan streame media, inkludert video, til en Mediaspiller
objekt ved hjelp av en overflatevisning. For eksempel kan du bruke følgende layout:
Vi vil referere til SurfaceView
i gjennomføringen av Aktivitet
klasse.
I din Aktivitet
klasse, legg til følgende grensesnitt:
offentlig klasse MainActivity utvider Aktivitetsredskaper SurfaceHolder.Callback, OnPreparedListener
Din IDE skal be deg om å legge til disse ikke-implementerte metodene:
@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Auto-generert metode stub @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO automatisk generert metode stub @Override public void onPrepared (MediaPlayer mp) // start avspilling
Vi legger til i surfaceCreated
og onPrepared
fremgangsmåter.
For å implementere avspilling, legg til følgende instansvariabler i klassen:
privat MediaPlayer mediaPlayer; privat overflatehodder vidholder; privat SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
I Aktivitet
's onCreate
metode, kan du da begynne å instantiere disse variablene ved hjelp av SurfaceView
Motta deg lagt til i oppsettet:
vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (this);
I surfaceCreated
metode, sett opp medieavspillingsressursene dine:
prøv mediaPlayer = new MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (this); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); fangst (unntak e) e.printStackTrace ();
Til slutt, i onPrepared
metode, start avspilling:
mediaPlayer.start ();
Videoen din skal nå spille i Mediaspiller
eksempel når du kjører appen.
I denne opplæringen har vi skissert grunnleggende om streaming video på Android ved hjelp av VideoView
og Mediaspiller
klasser. Du kan legge til mange forbedringer av koden vi implementerte her, for eksempel ved å bygge video eller streaming media støtte i musikkavspilleren appen vi opprettet. Du kan også ønske å sjekke ut tilknyttede ressurser til Android, for eksempel YouTube Android Player API.