package com.future.driver.utils.view;
|
|
import android.content.Context;
|
import android.hardware.Camera;
|
import android.view.SurfaceHolder;
|
import android.view.SurfaceView;
|
|
import java.io.IOException;
|
|
/**
|
* Created by allens on 2017/3/15.
|
*/
|
|
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
|
private SurfaceHolder mHolder;
|
private Camera mCamera;
|
|
public CameraPreview(Context context, Camera camera) {
|
super(context);
|
//初始化Camera对象
|
mCamera = camera;
|
//得到SurfaceHolder对象
|
mHolder = getHolder();
|
//添加回调,得到Surface的三个声明周期方法
|
mHolder.addCallback(this);
|
// deprecated setting, but required on Android versions prior to 3.0
|
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
|
}
|
|
@Override
|
public void surfaceCreated(SurfaceHolder holder) {
|
try {
|
//设置预览方向
|
mCamera.setDisplayOrientation(90);
|
//把这个预览效果展示在SurfaceView上面
|
mCamera.setPreviewDisplay(holder);
|
//开启预览效果
|
mCamera.startPreview();
|
} catch (IOException e) {
|
// Log.d(TAG, "Error setting camera preview: " + e.getMessage());
|
}
|
|
}
|
|
@Override
|
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
|
if (holder.getSurface() == null) {
|
return;
|
}
|
//停止预览效果
|
mCamera.stopPreview();
|
//重新设置预览效果
|
try {
|
mCamera.setPreviewDisplay(mHolder);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
mCamera.startPreview();
|
}
|
|
@Override
|
public void surfaceDestroyed(SurfaceHolder holder) {
|
|
}
|
}
|