private static final int BACK_CAMERA = 0; //判断相机ID
private static final int ROTATION = 90;
private static final int REVERT = 180;
private static final int PERVIEW_WIDTH = 320;
private static final int PREVIEW_HEIGHT = 240;
private int mZoomMax;
private SeekBar mSeekBar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camer);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mSurfaceView = findViewById(R.id.surface
View);
holder = mSurfaceView.getHolder(); //获得句柄
holder.addCallback(this); //添加回调
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //兼容旧的API
mSeekBar = findViewById(R.id.seekbar);
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
value = progress + 50;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//TODO Auto-generator method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
parameters.setZoom(value);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
});
}
@Override
protected void onPause() {
super.onPause();
try{
if(mCamera != null){
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}catch (Exception e){
e.printStackTrace();
}
}
private void startCamera(){
if(mFlag){
if(mCamera != null){
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
try{
mCamera = Camera.open(mCameraId);
}catch (Exception e){
e.printStackTrace();
}
if(mCamera != null){
mCamera.setDisplayOrientation(mCameraId == BACK_CAMERA ? ROTATION :ROTATION);
parameters = mCamera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.set(“orientation”,“portrait”);
parameters.setPreviewSize(PERVIEW_WIDTH,PREVIEW_HEIGHT);
parameters.setRotation(mCameraId == BACK_CAMERA ? ROTATION : REVERT + ROTATION);
mZoomMax = value;
parameters.setZoom(mZoomMax);
mCamera.setParameters(parameters);
try{
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
mFlag = true;
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
startCamera();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {