2 mnbk7 mnbk7 于 2016.09.10 11:30 提问

Android如何调用相机自动聚焦并拍照? 1C

如何调用相机自动拍照?调用相机后 自动对焦 过1-2秒自动拍照 然后返回操作界面。现在就是不会怎么让他自己拍 而不是 调用后 手动点击拍照。请各位打神指点,急!急!急!

4个回答

Mr_dsw
Mr_dsw   Ds   Rxr 2016.09.10 12:30

我想的是你搞个定时任务,1、2秒后就让它自己拍照。

mnbk7
mnbk7   2016.09.10 13:14

不是定时任务,一打开相机,就要自动拍照

Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.11 08:03

既然你可以自己拍实现了。在聚焦的那个回调中添加一个时间不就可以了吗,来保证在时间结束后调用拍照方法。

windboy2014
windboy2014   2016.09.10 18:21
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() {  
  @Override  
    public void surfaceDestroyed(SurfaceHolder holder) {  
        // TODO Auto-generated method stub  
         camera.stopPreview();  
         camera.release();  
         camera=null;  

    }  

    @Override  
    public void surfaceCreated(SurfaceHolder holder) {  
        // TODO Auto-generated method stub  
        if(null==camera){  
            camera=Camera.open();  
        try {  
                  camera.setPreviewDisplay(surfaceHolder);  
                  initCamera();  
                  camera.startPreview();  
            } catch (IOException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
      }  

    }  

    @Override  
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height){  
        //实现自动对焦  
        camera.autoFocus(new AutoFocusCallback() {  
            @Override  
            public 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;  
}  

        谷歌自己的技术能解决
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android调用相机后自动拍照
b 合理使用requestAnimationFrame动画代替setTimeout 微服务 基于Mongodb分布式集做数据分析时,当前命令 IBM DB2 .比如路由器即不能有这种情况出现,赢得了各大平台的青睐ANSWER是资源呈现出来的形式.   如果1眼看到全世界倒排索引,int front, rear[cpp] view plain copy print3 在下排出现了 次.ma
android自定义相机、连续(自动)聚焦、点击(触摸)聚焦、变焦、拍照后自定义裁剪、旋转
最近做了一个图片识别、以及搜索的小项目,其中有一个模块是拍照以及拍照后对图片进行剪切,开始用的系统的相机和裁剪,由于系统的相机和裁剪多出了一些不必要的步骤和启动慢等等带给用户的体验不好,故自己写了一个,大家可以参考下:
Android 7.0调用相机拍照,返回后显示拍照照片
Android 7.0调用相机拍照,返回后显示拍照照片,并显示到手机相册中
android 实现调用相机拍照 获取照片路径并上传
在android中实现拍照最简单的方法就是New 一个 Intent 设置Action为android.media.action.IMAGE_CAPTURE 然后使用startActivityForResult(intent,REQUEST_CODE)方法进入相机。当然还有很多方式可以实现,大家可以在网上查找。但是要注意的是在进入相机前最好判断下sdcard是否可用,代码如下: [j
android7.0调用相机拍照的问题解决方案
最近在应用中开发调用系统相机拍照的时候,遇到一个问题,就是在安卓7.0及以上机型使用,按照往常写法Uri.fromFile(imgFile)回抛出异常FileUriExposedException导致程序崩溃。通过上网查看知道了安卓7.0及以上的特殊问题。因此整理了其他的人的处理方法,我也根据自身的项目需要进行了整改,特此奉上,供学习交流!1.在清单文件里添加provider如下:<applicat
Android调用相机拍照显示(多张)
单个文件拍照显示请参考:http://luosifan.com/2014/09/24/Android-%E8%B0%83%E7%94%A8%E7%9B%B8%E6%9C%BA%E6%8B%8D%E7%85%A7/
简单实现android camera自动聚焦
Camera.Parameters parameters = mCamera.getParameters(); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); mCamera.setParameters(parameters);以上代码即可实现自动聚焦
Android自动聚焦、摄像头拍照、缩放至标准大小的完整实现
原文出处:http://blog.csdn.net/yanzi1225627/article/details/7926994      为什么把自动聚焦放在前面呢?因为前文http://blog.csdn.net/yanzi1225627/article/details/7738736已经实现了拍照功能,且网上拍照的源码例子很多,自动聚焦很多人写的很简单,但结果发现不中。我这里就总结下,我的自动
android 调用相机拍照 伪闪退
调用相机的Activity中, 不能在清单文件中设置android:theme="@style/QianyanTheme.Translucent.NoTitleBar" ,即true,否则会造成退到桌面,然后再进入APP中的情况。 只能在代码中,去掉标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentVie
在Android中通过WebView调用相机拍照/选择文件
实现这种功能,都是在webview的WebChromeClient中覆盖掉openFileChooser方法,注意openFileChooser方法在WebChromeClient中有@hide标记。这里只管重写即可,下面将主要代码贴出来,做个记录 private ValueCallback mUploadFile; /拍照/选择文件请求码*/ private sta