android摄像头对焦设置,新人求助,android摄像头手动对焦代码?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

public class MainActivity extends Activity {private SurfaceView surfaceView;private SurfaceHolder surfaceHolder;private boolean flag = false;private String fileUrl="";Camera camera;Camera.Parameters parameters;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); surfaceView = (SurfaceView) findViewById(R.id.surfaceView1); Button button=(Button) findViewById(R.id.takepicture); surfaceHolder = surfaceView.getHolder(); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceHolder.setKeepScreenOn(true); surfaceView.setFocusable(true); surfaceView.setBackgroundColor(TRIM_MEMORY_BACKGROUND); surfaceHolder.addCallback(new Callback() { @Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub camera.stopPreview(); camera.release(); camera=null;}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stubif(null==camera){ camera=Camera.open(); try { camera.setPreviewDisplay(surfaceHolder); initCamera(); camera.startPreview();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }} @Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height){ //实现自动对焦 camera.autoFocus(new AutoFocusCallback() { @Overridepublic void onAutoFocus(boolean success, Camera camera) { if(success){ initCamera();//实现相机的参数初始化 camera.cancelAutoFocus();//只有加上了这一句,才会自动对焦。 } }}); }}); } //相机参数的初始化设置 private void initCamera(){ parameters=camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); //parameters.setPictureSize(surfaceView.getWidth(), surfaceView.getHeight()); // 部分定制手机,无法正常识别该方法。parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//1连续对焦setDispaly(parameters,camera);camera.setParameters(parameters);camera.startPreview();camera.cancelAutoFocus();// 2如果要实现连续的自动对焦,这一句必须加上} //控制图像的正确显示方向 private void setDispaly(Camera.Parameters parameters,Camera camera) { if (Integer.parseInt(Build.VERSION.SDK) >= 8){setDisplayOrientation(camera,90);}else{parameters.setRotation(90);} } //实现的图像的正确显示 private void setDisplayOrientation(Camera camera, int i) { Method downPolymorphic; try{ downPolymorphic=camera.getClass().getMethod("setDisplayOrientation", new Class[]{int.class}); if(downPolymorphic!=null) { downPolymorphic.invoke(camera, new Object[]{i}); }}catch(Exception e){Log.e("Came_e", "图像出错");} } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

//你可以参考下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值