Textur-Ansicht, video-und Bitmap-display

Ich habe eine TextureView zeigt, dass ein bitmap(Platzhalter-Bild) und wenn der Nutzer lädt ein video der textureView sollte zeigen das video.

Ich es geschafft, die video-Wiedergabe in der textur-Ansicht und zeigt eine bitmap in eine textureview, aber wenn Sie getan werden, in der Folge, bekomme ich nur einen schwarzen Bildschirm.

In meinem onSurfaceTextureAvailable Methode, die ich zeichnen einer bitmap auf der Oberfläche anzeigen wie folgt:

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_add_clip);
    Canvas canvas = lockCanvas();
    canvas.drawBitmap(bm, (width/2)-(bm.getWidth()/2), (height/2)-(bm.getHeight()/2), null);
    unlockCanvasAndPost(canvas);
}

Wenn der Benutzer wählt ein video aus der Galerie lade ich die Uri im Media player, und legen Sie die Oberfläche der mediaplayer. Aber das bitmap wird immer noch angezeigt. ich versuchte, entfernen Sie die bitmap durch das löschen des canvas, und es tut, entfernen Sie die bitmap, aber dann ist die textur-Ansicht einfach schwarz und wird nicht angezeigt, das video ebenfalls.

public void setMediaPlayer(MediaPlayer mediaPlayer) {
    //Canvas canvas = lockCanvas();
    //canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
    //unlockCanvasAndPost(canvas);

    Surface s = new Surface(getSurfaceTexture());
    mMediaPlayer = mediaPlayer;
    mMediaPlayer.setSurface(s);
    mMediaPlayer.setOnPreparedListener(this);
}

Etwas sagt mir, dass die Oberfläche Blick ich bin mit der Anzeige des Videos ist hinter der bitmap, die ich ziehen im TextureAvailble. Und wenn ich versuchen, deaktivieren Sie die Leinwand, die ich auch klar die Oberfläche, die den mediaplayer nutzen will. Alle Lösungen?

InformationsquelleAutor EvertvdBraak | 2015-03-12
Schreibe einen Kommentar