/**
* http://my.oschina.net/lifj/blog/705104
**/
在做Camera预览的时候,通过PreviewFrame()方法获取数据,但是发现fps很低,一直在10~12fps徘徊。
当然,有人推荐使用setPreviewCallbackWithBuffer。试了一下,fps没有明显的提升。虽然没有提升,但还是加上吧,避免camera频繁的创建/销毁内存,引起gc。
在stack上搜索,发现一个4.0以后的方法(应该可以了,谁还在开发4.0之前的版本?):
setRecordingHint
添加之后fps明显上升,一直到最高支持fps。
cam = Camera.open();
cam.setPreviewDisplay(holder);
Camera.Parameters parameters = cam.getParameters();
//new
//3句全加,30fps
parameters.setRecordingHint(true);//去掉这句,12fps
//parameters.setAutoExposureLock(true);//去掉这句,30fps
// parameters.setAutoWhiteBalanceLock(true);//去掉这句,30fps
parameters.setFlashMode("off"); // 无闪光灯
parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
parameters.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
parameters.setPreviewFormat(PreviewFromat_NV21);
// 这两个属性 如果这两个属性设置的和真实手机的不一样时,就会报错
parameters.setPictureSize(320, 240);
parameters.setPreviewSize(320, 240);
cam.setParameters(parameters);