간단한 얼굴인식 해보려고 하는데요,
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Camera.Parameters param = camera.getParameters();
param.setPreviewSize(width, height);
camera.setParameters(param);
camera.startPreview();
camera.startFaceDetection();
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
camera = Camera.open(1);
try {
camera.setPreviewDisplay(holder);
Log.d("FaceDetection", "" + camera.getParameters().getMaxNumDetectedFaces());
if(camera.getParameters().getMaxNumDetectedFaces() > 0) {
camera.setFaceDetectionListener(mFaceDetectionListener);
}
}
catch (IOException exception) {
camera.release();
camera = null;
}
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
camera.stopFaceDetection();
camera.stopPreview();
camera = null;
}
FaceDetectionListener mFaceDetectionListener = new FaceDetectionListener() {
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
Log.d("FaceDetection", "called");
if(faces.length > 0) {
Log.d("FaceDetection", faces[0].toString());
}
}
};
위의 코드가 ICS에서는 잘 되는데 젤리빈에서는 onFaceDetection 함수가 호출조차 안됩니다.
구글링해봐도 실마리도 못찾겠네요.
혹시 젤리빈으로 오면서 facedetectionlistener 사용시 주의할 점이라든가 하는 것이 있나요?
ICS는 LG LTE, 젤리빈은 LG 옵티머스 G 폰입니다.