本文是个人开发Camera APP中总结的问题之一,主要介绍FaceDetection的基本使用方法和注意问题。文中如有错误和不足,欢迎批评指正。 一、关于FaceDetection 1、版本支持 FaceDetection是Android ICE_CREAM_SANDWICH (Android Version 4.0,ADT 14)版开始增加的功能,实际是否支持还得依赖于设备自身的限制( Camera.Parameters.getMaxNumDetectedFaces() > 0)。 2、FaceDetectionListener 下面是FaceDetectionListener接口的源码: /** *Callbackinterfaceforfacedetectedinthepreviewframe. * */ publicinterfaceFaceDetectionListener { /** *Notifythelistenerofthedetectedfacesinthepreviewframe. * *@paramfacesThedetectedfacesinalist *@paramcameraThe{@linkCamera}serviceobject */ voidonFaceDetection(Face[]faces,Cameracamera); } FaceDetectionListener只有一个方法,FaceDetection(Face[] faces, Camera camera)。其中faces是检测到的人脸数组(注意可能检测不到),camera是当前Camera对象。 使用时,需要创建一个FaceDetectionListener并重写onFaceDetection方法,在方法中遍历faces进行处理。 Example: mCamera.setFaceDetectionListener(newNodinFaceDetectionListener()); classNodinFaceDetectionListenerimplementsFaceDetectionListener{ privatestaticfinalStringTAG="NodinFaceDetectionListener"; @Override publicvoidonFaceDetection(Face[]faces,Cameracamera){ //TODOAuto-generatedmethodstub if(null==faces||faces.length==0){ //TODOHidefaceframe. Log.d(TAG,"onFaceDetection:Thereisnofacefound."); }else{ //Faceface=faces[0]; //RectfaceRect=face.rect; //TODOCalculatethesizeoffaceframeandshow. Log.d(TAG,"onFaceDetection:At least one face has been found."); } } } 3、启动FaceDetection 启动FaceDetection很简单,mCamera.startFaceDetection(). 但是需要注意一个问题:startFaceDetection()方法必须在Camera的startPreview之后调用 4、停止FaceDetection mCamera.stopFaceDetection(). 同样需要注意顺序问题:stopFaceDetection()方法必须在Camera的stopPreview之前调用 5、关于takePicture Google API描述,在执行Camera的takePicture方法时,系统会自动调用stopPreview同时停止FaceDetection。如果此后又调用了stopFaceDetection()方法,会抛出 IllegalStateException:stop facedetection failed.由于该异常是从底层抛出的,无法确定异常抛出行,解决起来比较棘手。在此例中,由于FaceDetection在takePicture时已经stop,如果再调用stopFaceDetection()方法,会出现该问题。在使用FaceDetection时,使用状态标识来记录Face Detector的状态,在takePicture时将标识设为stop并在start和stop方法中判断标识状态,可以避免该问题。 ——2013.5.14 写于北京

更多相关文章

  1. Android(安卓)Launcher3安装应用后,控制应用图标显示位置
  2. Android(安卓)Framework初步认识
  3. android自定义相机添加自定义水印
  4. Android(安卓)事件分发机制(最新源码6.0分析)--ViewGrop
  5. android 自定义view中onMeasure()理解
  6. Android欢迎页面闪屏解决方法
  7. Android进程优先级部分整理与理解
  8. Android(安卓)-- Messager与Service
  9. Android的OutOfMemory解决

随机推荐

  1. 老街华纳娱乐公司>17166918222
  2. 华纳公司注册网址>17166918222
  3. 漫画不会画透视?画漫画人物的透视技巧
  4. vue 向上通知、向下广播(子传父,父传子)
  5. Android(安卓)程序获取、设置铃声和音量
  6. android 类似QQ 换皮肤 实现思路 apk资源
  7. Android(安卓)build system 分析之 envse
  8. ProGuard Eclipse Android
  9. Android中必须学习的八大开源项目
  10. .Net 转战 Android(安卓)4.4 日常笔记(8)--