Die Android-Plattform bietet Bibliotheken, die Sie zum Streamen von Mediendateien verwenden können, z. B. Remote-Videos, und diese zur Wiedergabe in Ihren Apps präsentieren. In diesem Lernprogramm streamen wir eine Videodatei und zeigen sie mit der VideoView
Komponente zusammen mit einem MediaController
Objekt, damit der Benutzer die Wiedergabe steuern kann.
Wir werden auch kurz den Prozess der Präsentation des Videos mit der Media Player
Klasse. Wenn Sie die Serie zum Erstellen eines Musik-Players für Android abgeschlossen haben, können Sie das in diesem Lernprogramm erlernte Wissen verwenden, um es weiter zu verbessern. Sie sollten dieses Lernprogramm abschließen können, wenn Sie bereits einige Android-Apps entwickelt haben.
Wenn Sie eine vorgefertigte Lösung wünschen, besuchen Sie YoVideo, eine Android-App-Vorlage zum Erstellen eines schönen mobilen Videoplayers für Android-Smartphones.
Benutzer können Videos auf Facebook anzeigen, verfolgen und mit ihren Freunden teilen. Wenn Sie diese Anwendungsvorlage verwenden, sparen Sie Zeit und Geld bei der Erstellung einer Video-Sharing-Anwendung.
YoVideo auf dem Envato MarketOder Sie könnten einen Android-Entwickler beauftragen, um eine individuelle Lösung für Sie zu erstellen. Ansonsten lesen Sie die Anweisungen, wie Sie es selbst machen können.
Sie können den Code in diesem Lernprogramm verwenden, um eine vorhandene Anwendung zu verbessern, an der Sie gerade arbeiten, oder Sie können jetzt eine neue Anwendung in Eclipse oder Android Studio erstellen. Erstellen Sie ein neues Android-Projekt, geben Sie ihm einen Namen Ihrer Wahl, konfigurieren Sie die Details und geben Sie ihm ein erstes Hauptfenster Aktivität
Klasse und Layout.
Zuerst konfigurieren wir das Manifest des Projekts für Streaming Media. Öffnen Sie die Manifestdatei Ihres Projekts und wechseln Sie in der IDE zur XML-Bearbeitung. Für das Streaming von Medien benötigen Sie einen Internetzugang. Fügen Sie daher die folgende Berechtigung in das Feld ein Manifest
Element:
VideoView
Die Android-Plattform bietet die VideoView
Klasse, in der Sie Videodateien abspielen können. Fügen wir der Hauptlayoutdatei eine hinzu:
Ändern Sie ggf. das übergeordnete Layout an Ihre eigene App. Wir geben die VideoView
Beispiel ein Ich würde
Attribut, damit wir später darauf zurückgreifen können. Möglicherweise müssen Sie die anderen Layout-Eigenschaften für Ihr eigenes Design anpassen.
Lassen Sie uns jetzt einen Verweis auf die VideoView
Instanz im Code. Öffnen Sie das Hauptmenü Ihrer App Aktivität
Klasse und fügen Sie die folgenden zusätzlichen Importe hinzu:
import android.net.Uri; import android.widget.MediaController; import android.widget.VideoView;
Ihre Aktivität
Klasse sollte bereits enthalten onCreate
Methode, in der die Inhaltsansicht festgelegt ist:
@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main);
Nach dem setContentView
Zeile, lassen Sie uns einen Verweis auf die VideoView
Beispiel wie folgt mit der Ich würde
wir setzen im XML-Layout:
VideoView vidView = (VideoView) findViewById (R.id.myVideo);
Jetzt können wir eine Videodatei in die App streamen. Bereiten Sie den URI für den Endpunkt wie folgt vor:
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4"; Uri vidUri = Uri.parse (vidAddress);
Sie müssen natürlich die Remote-Adresse für die Videodatei verwenden, die Sie streamen möchten. Das Beispiel hier ist eine im Internetarchiv gehostete Public Domain-Videodatei. Wir analysieren die Adresszeichenfolge als URI, damit wir sie an den übergeben können VideoView
Objekt:
vidView.setVideoURI (vidUri);
Jetzt können Sie einfach die Wiedergabe starten:
vidView.start ();
Das Android-Betriebssystem unterstützt eine Reihe von Video- und Medienformaten, wobei jedes Gerät häufig zusätzliche Formate unterstützt.
Wie Sie dem Entwicklerhandbuch entnehmen können, umfassen die unterstützten Videodateiformate 3GP, MP4, WEBM und MKV, je nach verwendetem Format und auf welcher Plattformebene der Benutzer installiert hat.
Audio-Dateiformate, von denen Sie erwarten können, dass sie MP3, MID, OGG und WAV unterstützen. Sie können Medien auf Android über RTSP, HTTP und HTTPS streamen (von Android 3.1)..
Wir haben Videowiedergabe implementiert, aber der Benutzer erwartet und ist daran gewöhnt, die Kontrolle darüber zu haben. Die Android-Plattform stellt wiederum Ressourcen zur Verfügung, um dies unter Verwendung vertrauter Interaktion über die MediaController
Klasse.
In deiner Aktivität
Klasse onCreate
Methode vor der Zeile, in der Sie anrufen Start
auf der VideoView
, Erstellen Sie eine Instanz der Klasse:
MediaController vidControl = neuer MediaController (dieser);
Legen Sie als Nächstes fest, dass Sie die VideoView
Instanz als Anker:
vidControl.setAnchorView (vidView);
Und schließlich legen Sie es als Mediencontroller für die VideoView
Objekt:
vidView.setMediaController (vidControl);
Wenn Sie die App jetzt ausführen, sollte der Benutzer in der Lage sein, die Wiedergabe des Streaming-Videos zu steuern, einschließlich der Schnellvorlauf- und Rücklaufschaltflächen, einer Wiedergabe / Pause-Taste und einer Suchleistensteuerung.
Die Suchleistensteuerung wird von der Länge der Mediendatei rechts und der aktuellen Wiedergabeposition links begleitet. Der Streaming-Status wird nicht nur in der Suchleiste angezeigt, um zu einer Position in der Datei zu springen, sondern wird auch mit derselben Art von Anzeige angezeigt, die der Benutzer von Websites und Apps wie YouTube gewohnt ist.
Wie Sie beim Ausführen der App sehen werden, ist das Standardverhalten, dass die Steuerelemente nach wenigen Augenblicken ausgeblendet werden und wieder angezeigt werden, wenn der Benutzer den Bildschirm berührt. Sie können das Verhalten von konfigurieren MediaController
Gegenstand auf verschiedene Weise. In der Serie zum Erstellen einer Musikplayer-App für Android finden Sie ein Beispiel dafür. Sie können die Medienwiedergabe auch verbessern, indem Sie verschiedene Listener implementieren, um das Verhalten Ihrer App zu konfigurieren.
Media Player
Bevor wir fertig sind, lassen Sie uns einen alternativen Ansatz für das Streaming von Video mit der Media Player
Klasse, da wir es in der Serie zum Erstellen eines Musik-Players verwendet haben. Sie können Medien, einschließlich Videos, auf ein Medium streamen Media Player
Objekt mit einer Oberflächenansicht. Sie können beispielsweise das folgende Layout verwenden:
Wir werden uns auf das beziehen SurfaceView
bei der Umsetzung der Aktivität
Klasse.
In deiner Aktivität
Klasse, fügen Sie die folgenden Schnittstellen hinzu:
public class MainActivity erweitert Activity implementiert SurfaceHolder.Callback, OnPreparedListener
Ihre IDE sollte Sie auffordern, diese nicht implementierten Methoden hinzuzufügen:
@Override public void surfaceChanged (SurfaceHolder arg0, int arg1, int arg2, int arg3) // TODO Automatisch generierte Methodenstub @Override public void surfaceCreated (Oberflächenhalter arg0) // setup @Override public void surfaceDestroyed (SurfaceHolder arg0) ) // TODO Automatisch generierte Methodenstub @Override public void onPrepared (MediaPlayer mp) // Wiedergabe starten
Wir werden das hinzufügen surfaceCreated
und onPrepared
Methoden.
Um die Wiedergabe zu implementieren, fügen Sie der Klasse die folgenden Instanzvariablen hinzu:
privater MediaPlayer mediaPlayer; private SurfaceHolder vidHolder; private SurfaceView vidSurface; String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
In dem Aktivität
's onCreate
Sie können diese Variablen dann mithilfe von starten SurfaceView
Objekt, das Sie dem Layout hinzugefügt haben:
vidSurface = (SurfaceView) findViewById (R.id.surfView); vidHolder = vidSurface.getHolder (); vidHolder.addCallback (this);
In dem surfaceCreated
Methode, richten Sie Ihre Medienwiedergaberessourcen ein:
try mediaPlayer = neuer MediaPlayer (); mediaPlayer.setDisplay (vidHolder); mediaPlayer.setDataSource (vidAddress); mediaPlayer.prepare (); mediaPlayer.setOnPreparedListener (this); mediaPlayer.setAudioStreamType (AudioManager.STREAM_MUSIC); catch (Ausnahme e) e.printStackTrace ();
Zum Schluss im onPrepared
Methode, Wiedergabe starten:
mediaPlayer.start ();
Dein Video sollte jetzt im abgespielt werden Media Player
Instanz, wenn Sie die App ausführen.
In diesem Tutorial haben wir die Grundlagen für das Streaming von Video auf Android mit dem VideoView
und Media Player
Klassen. Sie können dem hier implementierten Code zahlreiche Verbesserungen hinzufügen, indem Sie beispielsweise die Unterstützung für Video-Player oder Streaming-Medien in die von uns erstellte Musik-Player-App integrieren. Sie können auch die zugehörigen Ressourcen für Android wie die YouTube-Android-Player-API von YouTube überprüfen.