Ich versuche, ein Video im Android-Emulator abzuspielen. Ich habe das Video sowohl in meinem Assets-Ordner als auch im Raw-Ordner. Nach einigen Recherchen kann ich jedoch kein Video in meinem Emulator abspielen. Ich arbeite an Android 2.1. Mein Videoformat ist mp4 Ich glaube nicht, dass das ein Problem sein sollte. Könnte mir jemand einen Beispielcode geben, damit ich ein bisschen mehr verstehen kann?
Das Problem ist, dass die Videoansicht, die ich zum Anzeigen des Videos benötige, nur einen URI oder einen Dateipfad verwendet, um auf das Video zu verweisen.
Wenn ich das Video im Raw- oder Assets-Ordner speichere, kann ich nur einen Eingabestream oder einen Dateideskriptor abrufen, und es scheint, dass nichts davon zum Initialisieren der VideoView verwendet werden kann.
Aktualisieren
Ich habe mir das MediaPlayer-Beispiel genauer angesehen und versucht, einen MediaPlayer mit einem FileDescriptor für die Assets-Dateien wie im folgenden Code zu starten:
SurfaceView videoView = (SurfaceView) findViewById(gettingStarted)
SurfaceHolder holder = videoView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
final MediaPlayer player = new MediaPlayer();
player.setDisplay(holder);
player.setDataSource(getAssets().openFd(fileName).getFileDescriptor());
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
Jetzt bekomme ich folgende Ausnahme:
java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
Es scheint, dass es keinen anderen Weg gibt, als die Datei beim Start auf die SD-Karte zu kopieren, und das scheint eine Verschwendung von Zeit und Speicher zu sein.