Ich versuche eine Wiedergabeliste von Videos zu implementieren, damit sie reibungslos von einem Video zum nächsten wechseln können. Das mediaPlayer-Objekt verfügt über eine prepareasync() -Methode, die das Video vorzuspüren scheint, damit es wiedergegeben werden kann. Wie rufe ich die Prepareasync-Methode vom VideoView-Objekt aus auf? Die Beispiele, die ich für mediaPlayer gefunden habe, verwenden entweder kein VideoView und scheinen die Oberfläche von Grund auf zu erstellen. Oder die Beispiele verwenden den mediaPlayer als Rückgabeparameter für Videobild-Ereignislistener, die anscheinend erst nach der videoview.play() -Erweiterung auftreten. Ich hätte gerne Zugriff auf den Mediaplayer von videoview, bevor ich die play-Methode aufrufen würde, damit ich prepareasync() und später play_() aufrufen kann.Aufruf von MediaPlayer.PrepareAsync von VideoView
6
A
Antwort
0
VideoView ist ein Wrapper für MediaPlayer und SurfaceView, sodass Sie es nicht selbst machen müssen. Ich glaube, der Wrapper macht die Vorbereitung, wenn Sie setVideoURI aufrufen. Es ist möglich, den Mediaplayer im VideoView durch den onPrepared Eventhandler zu erreichen, und sobald Sie es haben, können Sie sich anrufen nach dem ersten Mal vorbereiten, aber ich nehme an, die Interna sind knifflig und nicht so gut dokumentiert funktioniert möglicherweise nicht wie erwartet.
1
Genau wie user1023110 erwähnt, VideoView ist ein Wrapper um MediaPlayer. Tauchen in den Quellcode (da die Dokumente überhaupt nicht sinnvoll sind) Ich bestätigte, dass es ruft intern prepareAsync() in seiner privaten Methode Open():
private void openVideo() {
if (mUri == null || mSurfaceHolder == null) {
// not ready for playback just yet, will try again later
return;
}
// Tell the music playback service to pause
// TODO: these constants need to be published somewhere in the framework.
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
mContext.sendBroadcast(i);
// we shouldn't clear the target state, because somebody might have
// called start() previously
release(false);
try {
mMediaPlayer = new MediaPlayer();
if (mAudioSession != 0) {
mMediaPlayer.setAudioSessionId(mAudioSession);
} else {
mAudioSession = mMediaPlayer.getAudioSessionId();
}
mMediaPlayer.setOnPreparedListener(mPreparedListener);
mMediaPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
mMediaPlayer.setOnCompletionListener(mCompletionListener);
mMediaPlayer.setOnErrorListener(mErrorListener);
mMediaPlayer.setOnInfoListener(mOnInfoListener);
mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
mCurrentBufferPercentage = 0;
mMediaPlayer.setDataSource(mContext, mUri, mHeaders);
mMediaPlayer.setDisplay(mSurfaceHolder);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setScreenOnWhilePlaying(true);
mMediaPlayer.prepareAsync();
// we don't set the target state here either, but preserve the
// target state that was there before.
mCurrentState = STATE_PREPARING;
attachMediaController();
} catch (IOException ex) {
Log.w(TAG, "Unable to open content: " + mUri, ex);
mCurrentState = STATE_ERROR;
mTargetState = STATE_ERROR;
mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0);
return;
} catch (IllegalArgumentException ex) {
Log.w(TAG, "Unable to open content: " + mUri, ex);
mCurrentState = STATE_ERROR;
mTargetState = STATE_ERROR;
mErrorListener.onError(mMediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0);
return;
}
}
Verwandte Themen
- 1. Stretch, um VideoView, Seitenverhältnis von VideoView zu füllen
- 2. VideoView stoppte auf Dialog geöffnet von Anykind
- 3. Vollbildmodus zum Anzeigen von Videos mit VideoView
- 4. Öffnen von RTSP-Video in VideoView
- 5. VideoView-Dauer
- 6. Resize VideoView
- 7. Android VideoView Streaming-Probleme
- 8. Android 2.2 VideoView Problem
- 9. Aufruf von Python von C#
- 10. Aufruf von Clojure von .NET
- 11. Aufruf von Haskell von Node.JS
- 12. Aufruf von Service von Html
- 13. Aufruf von hbm2ddl von Gradle
- 14. In der Registerkarte Galaxie, onCompletionListener von videoView wird nicht aufgerufen
- 15. Android VideoView oder SurfaceView zum Abspielen von Videos?
- 16. Android - MediaController von VideoView in Dialog erscheint hinter dem Dialog
- 17. VideoView/Layout zum Abspielen von Video auf Android
- 18. wie man die Breite von videoview programmatisch ändert
- 19. VideoView Flackern Problem
- 20. Videoview in Listview
- 21. Videos mit VideoView puffern
- 22. VideoView im Vollbildmodus
- 23. VideoView Loader Android
- 24. Aufruf von didHighlightItemAtIndexPath ohne Aufruf von didSelectItemAtIndexPath für UICollectionView
- 25. Android MediaPlayer/VideoView-Fehler (1, -2147483648)
- 26. Android TextureView vs VideoView Leistung
- 27. Android VideoView speichern RTSP-Stream
- 28. spielen mehrere Videos Videoview mit
- 29. Effizienter Aufruf von Plugin nach AJAX-Aufruf
- 30. Redundanter Aufruf von Object.ToString()