2016-10-12 2 views
0

Я пишу приложение, где мне нужно отображать два TextureView (s) в моей деятельности. Я прилагаю видео к каждому из TextureView экземпляра, используя MediaPlayer объекты, используя следующий код внутри onSurfaceTextureAvailable():Как узнать onSurfaceTextureAvailable, для которого TextureView

@Override 
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) { 

    Surface surface = new Surface(surfaceTexture); 

    mMediaPlayer1 = new MediaPlayer(); 

    try { 
     mMediaPlayer1.setDataSource(<filePath>); 
    } catch (IOException e) { 
     Log.e(TAG, "Unable to load the file from the file system", e); 
     return; 
    } 

    mMediaPlayer1.setSurface(surface); 
    mMediaPlayer1.setLooping(true); 
    mMediaPlayer1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
      isPlaybackReady = true; 
     } 
    }); 

    mMediaPlayer1.prepareAsync(); 
} 

Теперь, если у меня есть два экземпляра TextureView, как бы я знать, обратный вызов в onSurfaceTextureAvailable(...) для которых TextureView.

Другой способ заключается в установке на MediaPlayer объекты за пределами onSurfaceTextureAvailable(...), получая власть над соответствующей SurfaceTexture по телефону TextureView.getSurfaceTexture(). Я тоже это пробовал, но он всегда возвращает null. Есть ли что-то еще, что мне нужно сделать для этого?

ответ

1

Вы можете просто установить два экземпляра TextureView с помощью другого слушателя.

textureView1.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { 
    @Override 
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) { 
     doSomething(textureView1, surfaceTexture, i, i1); 
    } 
    // implement other methods 


    }); 

textureView2.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { 
    @Override 
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) { 
     doSomething(textureView2, surfaceTexture, i, i1); 
    } 

    // implement other methods 
    }); 

}

+0

как я могу пропустить это. Большое спасибо!!! – Swapnil

Смежные вопросы