2013-05-09 5 views
8

मैं सामने वाले कैमरे के फ्रेम में चेहरों की संख्या का पता लगाना चाहता हूं। एक बार जब मैं इस छवि का उपयोग कर छवि प्राप्त करता हूं तो मैं चेहरे का पता लगा सकता हूं: http://www.developer.com/ws/android/programming/face-detection-with-android-apis.html। लेकिन मुझे नहीं पता कि उपयोगकर्ता बातचीत के बिना हर 30 सेकंड में फ्रंट कैमरा का उपयोग करके एक छवि कैप्चर कैसे करें। क्या कोई मेरी मदद कर सकता है?उपयोगकर्ता इंटरैक्शन के बिना एंड्रॉइड में फेस डिटेक्शन

+0

क्या आप इस तरह हैंडलर का उपयोग नहीं कर सके: this.refreshTimer = 30 * 1000; this.handlerFaceCapture = नया हैंडलर(); this.faceCapture = नया FaceCaptureScheduler(); this.handlerFaceCapture .postDelayed (this.handlerFaceCapture, this.refreshTimer); यह शेड्यूलर निष्पादित करेगा जो प्रत्येक 30 सेकंड अंतराल पर रननेबल लागू करना चाहिए। – Gilson

उत्तर

4

निम्नलिखित कोड प्रत्येक 5 सेकंड के बाद आपके कैमरे से फोटो कैप्चर करेगा।

if (TIMER_STARTED) { 
    multishotTimer.cancel(); 
    multishotTimer.purge(); 
    TIMER_STARTED = false; 
} else { 
    multishotTimer = new Timer(); 
    multishotTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      TIMER_STARTED = true; 
      Camera camera = surfaceView.getCamera(); 
      camera.takePicture(null, null, 
       new HandlePictureStorage()); 
     } 
    }, 1000, 5000L); 
} 

यहाँ, TIMER_STARTED बूलियन जो संकेत टाइमर या नहीं चल रहा है या नहीं।

बाद के लिए कोड है HandlePictureStorage

private class HandlePictureStorage implements PictureCallback { 
    @Override 
    public void onPictureTaken(byte[] picture, final Camera camera) { 
    //do something when picture is captured... 
    } 
} 
-1

आप हर 30 सेकंड में AlarmManager का उपयोग कर, एक RTC_WAKEUPAlarm का समय निर्धारण किया जाना चाहिए, एक Service लांच करने के लिए Alarm करने के लिए एक PendingIntent सेट और Service अंदर आप छवि पर कब्जा करने के Camera का उपयोग करना चाहिए।

आपको शायद इस पोस्ट को देखना चाहिए: Open/Run camera from a background Service

1

इस प्रकार आप इस पर मैन्युअल रूप से एक SurfaceView और पूर्वावलोकन कैमरा बना सकते हैं:

//First get a reference to the SurfaceView displaying the camera preview 
cameraSurface = (SurfaceView) findViewById(R.id.cameraSurface); 
cameraSurfaceHolder = cameraSurface.getHolder(); 
cameraSurfaceHolder.addCallback(cameraSurfaceHolderCallbacks); 
. 
. 
. 
private SurfaceHolder.Callback cameraSurfaceHolderCallbacks = new SurfaceHolder.Callback() { 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     if(mCamera == null)return; 
     mCamera.stopPreview(); 
     mCamera.release(); 
     mCamera = null; 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 

     try { 
      mCamera = Camera.open(); 
      mCamera.setPreviewDisplay(holder); 
     } catch (Exception exception) { 
      if(mCamera == null)return; 
      mCamera.release(); 
      mCamera = null; 
     } 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     Parameters cameraParameters = mCamera.getParameters(); 
     cameraParameters.setPreviewSize(320, 240); 
     cameraParameters.setPictureSize(320, 240); 
     int avrgExposure = (cameraParameters.getMinExposureCompensation() + cameraParameters.getMaxExposureCompensation())/2; 
     cameraParameters.setExposureCompensation(avrgExposure); 
     mCamera.setParameters(cameraParameters); 
     mCamera.startPreview(); 
     mCamera.takePicture(null, null, mPictureCallback); 
    } 
}; 

में उचित कैमरा अनुमति जोड़ने के लिए मत भूलना अपने मैनिफेस्ट:

<uses-permission android:name="android.permission.CAMERA"/> 

और अंत में आप एक Android 4.0 उपकरण या इसके बाद के संस्करण का उपयोग कर रहे है अगर आप विधि का उपयोग कर सकते हैं:

mCamera.startFaceDetection(); 
. 
. 
. 
private FaceDetectionListener faceDetectionListener = new FaceDetectionListener() { 

    @Override 
    public void onFaceDetection(Face[] faces, Camera camera) { 
     //Faces have been detected... 
    } 
}; 
. 
. 
. 
mCamera.setFaceDetectionListener(faceDetectionListener); 

आप इस post जो कि विशिष्ट कार्यक्षमता से संबंधित सब कुछ बताते हैं और यहां तक ​​कि प्रदान करता है एक कार्यात्मक Android स्रोत कोड पर जा सकते हैं कि आप इसे स्वयं करने के लिए डाउनलोड कर सकते हैं।

सम्मान!

संबंधित मुद्दे