如何知道onSurfaceTextureAvailable是为哪个TextureView调用的
How to know onSurfaceTextureAvailable is called for which TextureView
我正在编写一个应用程序,我需要在 activity 上显示两个 TextureView
(s)。我在 onSurfaceTextureAvailable()
:
中使用以下代码使用 MediaPlayer
对象将视频附加到每个 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
。
另一种方法是在 onSurfaceTextureAvailable(...)
之外设置 MediaPlayer
对象,方法是调用 TextureView.getSurfaceTexture()
来控制关联的 SurfaceTexture
。我也试过了,但总是 returns null
。我还需要为此做些什么吗?
您可以只设置两个具有不同侦听器的 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
});
}
我正在编写一个应用程序,我需要在 activity 上显示两个 TextureView
(s)。我在 onSurfaceTextureAvailable()
:
MediaPlayer
对象将视频附加到每个 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
。
另一种方法是在 onSurfaceTextureAvailable(...)
之外设置 MediaPlayer
对象,方法是调用 TextureView.getSurfaceTexture()
来控制关联的 SurfaceTexture
。我也试过了,但总是 returns null
。我还需要为此做些什么吗?
您可以只设置两个具有不同侦听器的 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
});
}