/**

* 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);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐