纠结SurfaceView和TextureView,想用Texture代替SurfaceView显示视频。
TextureView在Android4.0之后推出,是为了弥补SurfaceView的不足。
TextureView可以用来显示内容流,这样一个内容流可以是视频,OpenGL场景。内容流可以来自本应用以及其他进程
TextureView必须在硬件加速开启的窗口中。
与SurfaceView相比,TextureView不会创建一个单独的窗口,这使得它可以向一般的View一样执行一些操作。
官方demo提供了一个相机预览到TextureView
public classMainActivity extends Activity implements SurfaceTextureListener{
private Camera mCamera;
private TextureView mTextureView;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextureView = new TextureView(this);
mTextureView.setSurfaceTextureListener(this);
setContentView(mTextureView);
}
@Override
public voidonSurfaceTextureAvailable(SurfaceTexture surface, int width,
int height) {
mCamera = Camera.open();
try {
mCamera.setPreviewTexture(surface);
mCamera.startPreview();
}catch(Exception e) {
// TODO: handle exception
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexturesurface, intwidth,
int height) {
// TODO Auto-generated method stub
}
@Override
public booleanonSurfaceTextureDestroyed(SurfaceTexture surface) {
mCamera.stopPreview();
mCamera.release();
return false;
}
@Override
public voidonSurfaceTextureUpdated(SurfaceTexture surface) {
// TODO Auto-generated method stub
}
}
//添加相机权限
<uses-permission android:name="android.permission.CAMERA"/>