camera =Camera.open();
Camera.Parameters parameters=camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
parameters.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
parameters.setPreviewFormat(ImageFormat.YV12);
Camera.Size size= null;
List sizes =parameters.getSupportedPictureSizes();for (int i = 0; i < sizes.size(); i++) {//Log.i(TAG, String.format("camera supported picture size %dx%d", sizes.get(i).width, sizes.get(i).height));
if (sizes.get(i).width == 640) {
size= sizes.get(i);
}
}
parameters.setPictureSize(size.width, size.height);
Log.i(TAG, String.format("set the picture size in %dx%d", size.width, size.height));
sizes=parameters.getSupportedPreviewSizes();for (int i = 0; i < sizes.size(); i++) {//Log.i(TAG, String.format("camera supported preview size %dx%d", sizes.get(i).width, sizes.get(i).height));
if (sizes.get(i).width == 640) {
vsize= size = sizes.get(i);
}
}
parameters.setPreviewSize(size.width, size.height);
Log.i(TAG, String.format("set the preview size in %dx%d", size.width, size.height));
camera.setParameters(parameters);//set the callback and start the preview.
buffer = new byte[getYuvBuffer(size.width, size.height)];
camera.addCallbackBuffer(buffer);
camera.setPreviewCallbackWithBuffer(onYuvFrame);try{
camera.setPreviewDisplay(preview.getHolder());
}catch(IOException e) {
Log.e(TAG,"preview video failed.");
e.printStackTrace();return;
}
Log.i(TAG, String.format("start to preview video in %dx%d, buffer %dB", size.width, size.height, buffer.length));
camera.startPreview();