1.创建TextView
2.得到CameraMananger对象打开camera
3. 得到CameraDevice对象,注册callback
4.拿住CameraCaptureSession
5.发送CaptureRequest
public class MainActivity extends Activity {
private TextureView mTextureView;
private CameraCaptureSession mCameraCaptureSession;
private CameraDevice mCameraDevice;
private Surface mPreviewSurface;
//private String mCameraId;
//private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//预览用的surface
mTextureView = (TextureView) this.findViewById(R.id.textureView1);
mTextureView.setSurfaceTextureListener(new SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {
// TODO 自动生成的方法存根
mPreviewSurface = new Surface(arg0);
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
manager.openCamera("1", new CameraDevice.StateCallback() {
@Override
public void onOpened(CameraDevice arg0) {
// TODO 自动生成的方法存根s
mCameraDevice = arg0;
try {
mCameraDevice.createCaptureSession(Arrays.asList(mPreviewSurface),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession arg0) {
// TODO 自动生成的方法存根
mCameraCaptureSession = arg0;
try {
CaptureRequest.Builder builder;
builder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
builder.addTarget(mPreviewSurface);
mCameraCaptureSession.setRepeatingRequest(builder.build(), null, null);
} catch (CameraAccessException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
@Override
public void onConfigureFailed(CameraCaptureSession arg0) {
// TODO 自动生成的方法存根
}
}, null);
} catch (CameraAccessException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
@Override
public void onError(CameraDevice arg0, int arg1) {
// TODO 自动生成的方法存根
}
@Override
public void onDisconnected(CameraDevice arg0) {
// TODO 自动生成的方法存根
}
}, null);
} catch (CameraAccessException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
// TODO 自动生成的方法存根
return false;
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1, int arg2) {
// TODO 自动生成的方法存根
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture arg0) {
// TODO 自动生成的方法存根
}
});
}
}