Android-plattformen tillhandahåller bibliotek som du kan använda för att strömma mediefiler, t.ex. fjärrvideor och presentera dem för uppspelning i dina appar. I denna handledning strömmar vi en videofil och visar den med hjälp av VideoView
komponent tillsammans med a MediaController
motsätta sig att låta användaren styra uppspelningen.
Vi kommer också att kort genomgå processen med att presentera videon med hjälp av Mediaspelare
klass. Om du har slutfört serien om att skapa en musikspelare för Android kan du använda det du lär dig i den här handledningen för att ytterligare förbättra den. Du borde kunna slutföra denna handledning om du redan har utvecklat åtminstone några Android-appar.
Om du vill ha en färdig lösning, kolla YoVideo, en Android app mall för att skapa en vacker mobil videospelare för Android-smartphone.
Användare kan visa videoklipp, följa och dela med sina vänner på Facebook. Med hjälp av denna programmall sparar du pengar och tid när du skapar en videodelningsprogram.
YoVideo på Envato MarketEller du kan anställa en Android-utvecklare för att skapa en anpassad lösning för dig. I annat fall läs vidare för instruktionerna om hur du gör det själv.
Du kan använda koden i den här handledningen för att förbättra en befintlig app du jobbar med eller du kan skapa en ny app nu i Eclipse eller Android Studio. Skapa ett nytt Android-projekt, ge det ett namn du väljer, konfigurera detaljerna och ge den en första huvud Aktivitet
klass och layout.
Låt oss först konfigurera projektets manifest för streaming media. Öppna manifestfilen för ditt projekt och växla till XML-redigering i din IDE. För streaming media behöver du tillgång till internet, så lägg till följande behörighet inom manifestera
element:
VideoView
Android-plattformen tillhandahåller VideoView
klass där du kan spela videofiler. Låt oss lägga till en till huvudlayoutfilen:
Ändra moderlayouten så att den passar din egen app om det behövs. Vi ger VideoView
exempelvis en id
attribut så att vi senare kan hänvisa till det. Du kan behöva justera de andra layoutegenskaperna för din egen design.
Låt oss nu hämta en referens till VideoView
exempel i kod. Öppna appens huvud Aktivitet
klass och lägg till följande ytterligare import:
importera android.net.Uri; importera android.widget.MediaController; importera android.widget.VideoView;
Din Aktivitet
klassen bör redan innehålla onCreate
Metod där innehållsvisningen är inställd:
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);
Efter setContentView
linje, låt oss få en hänvisning till VideoView
Exempel på följande, med hjälp av id
vi sätter i XML-layout:
VideoView vidView = (VideoView) findViewById (R.id.myVideo);
Nu kan vi strömma en videofil till appen. Förbered URI för slutpunkten enligt följande:
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åste naturligtvis använda fjärradressen för videofilen du vill strömma. Exemplet här är en public domain-videofil värd på Internet Archive. Vi analyserar adresssträngen som en URI så att vi kan skicka den till VideoView
objekt:
vidView.setVideoURI (vidUri);
Nu kan du enkelt starta uppspelningen:
vidView.start ();
Android-operativsystemet stöder en rad video- och medieformat, där varje enhet ofta stöder ytterligare format ovanpå detta.
Som du kan se i utvecklarhandboken stöds videofilformat som 3GP, MP4, WEBM och MKV, beroende på vilket format som används och på vilken plattformsnivå användaren har installerat.
Ljudfilformat du kan förvänta dig inbyggt stöd för inkluderar MP3, MID, OGG och WAV. Du kan strömma media på Android via RTSP, HTTP och HTTPS (från Android 3.1).
Vi har genomfört videouppspelning, men användaren kommer att förvänta sig och vara van att ha kontroll över det. Återigen ger Android-plattformen resurser för hantering av detta med hjälp av välbekant interaktion via MediaController
klass.
I din Aktivitet
klassens onCreate
metod, före linjen som du ringer till Start
på VideoView
, skapa en förekomst av klassen:
MediaController vidControl = ny MediaController (this);
Ställ sedan in den för att använda VideoView
Exempel som sitt ankar:
vidControl.setAnchorView (vidView);
Och slutligen, sätt det som media controller för VideoView
objekt:
vidView.setMediaController (vidControl);
När du kör appen nu ska användaren kunna styra uppspelning av strömmande video, inklusive snabbspolning och spolningsknappar, en uppspelnings- / pausknapp och en sökbar kontroll.
Styrningen för sökfältet åtföljs av längden på mediefilen till höger och nuvarande uppspelningsläge till vänster. Förutom att kunna klicka längs sökfältet för att hoppa till en position i filen, visas strömmarstatusen med samma typ av visning som användaren kommer att vara van vid från webbplatser och appar som YouTube.
Som du kommer att se när du kör appen är standardbeteendet att kontrollerna försvinna efter några ögonblick, återkommer när användaren rör på skärmen. Du kan konfigurera beteendet hos MediaController
objekt på olika sätt. Se serien om att skapa en musikspelarapp för Android för ett exempel på hur du gör det här. Du kan också förbättra mediavisning genom att implementera olika lyssnare för att konfigurera appens beteende.
Mediaspelare
Innan vi avslutar, låt oss springa igenom ett alternativt sätt att spela upp video med hjälp av Mediaspelare
klass, eftersom vi använde den i serien om att skapa en musikspelare. Du kan strömma media, inklusive video, till en Mediaspelare
objekt med en ytvy. Du kan till exempel använda följande layout:
Vi hänvisar till SurfaceView
i genomförandet av Aktivitet
klass.
I din Aktivitet
klass, lägg till följande gränssnitt:
offentliga klass MainActivity utökar Aktivitetsredskap SurfaceHolder.Callback, OnPreparedListener
Din IDE bör uppmana dig att lägga till dessa oanvända metoder:
@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Automatisk genererad metodstub @Override public void surfaceCreated (SurfaceHolder arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0 ) // TODO automatiskt genererad metodstub @Override public void onPrepared (MediaPlayer mp) // starta uppspelning
Vi lägger till i surfaceCreated
och onPrepared
metoder.
För att implementera uppspelning lägger du till följande instansvariabler i klassen:
privat MediaPlayer mediaPlayer; Privat SurfaceHolder 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
metod kan du börja omedelbarera dessa variabler med hjälp av SurfaceView
objekt du lägger till i layouten:
vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (detta);
I surfaceCreated
metod, sätt upp dina media-uppspelningsresurser:
försök mediaPlayer = nytt MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (detta); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); fångst (Undantag e) e.printStackTrace ();
Slutligen, i onPrepared
metod, starta uppspelning:
mediaPlayer.start ();
Din video ska nu spelas i Mediaspelare
exempel när du kör appen.
I den här handledningen har vi redogjort för grunderna för streaming av video på Android med VideoView
och Mediaspelare
klasser. Du kan lägga till många förbättringar av koden som vi implementerade här, till exempel genom att skapa video eller streaming media support i den musikspelare app som vi skapade. Du kan också vilja kolla associerade resurser till Android, t.ex. YouTube Android Player API.