Desidero rilevare il numero di volti nella cornice della fotocamera anteriore. Posso rilevare la faccia una volta che ottengo l'immagine usando questo: http://www.developer.com/ws/android/programming/face-detection-with-android-apis.html. Ma non so come catturare un'immagine usando la fotocamera frontale ogni 30 secondi senza interazione con l'utente. Qualcuno può aiutarmi?Rilevamento dei volti in Android senza interazione dell'utente
risposta
Il codice seguente acquisirà foto dalla fotocamera ogni 5 secondi.
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);
}
Qui, TIMER_STARTED è booleano che indica se il timer è in funzione o meno.
seguito riporta il codice per HandlePictureStorage
private class HandlePictureStorage implements PictureCallback {
@Override
public void onPictureTaken(byte[] picture, final Camera camera) {
//do something when picture is captured...
}
}
Si dovrebbe essere la pianificazione di un RTC_WAKEUP
Alarm
utilizzando il AlarmManager
, a ogni 30 secondi, impostare un PendingIntent
al Alarm
di lanciare un Service
e dentro la Service
si dovrebbe accedere al Camera
per catturare l'immagine.
Probabilmente dovresti dare un'occhiata a questo post: Open/Run camera from a background Service.
È possibile creare manualmente una telecamera SurfaceView e anteprima su di esso nel modo seguente:
//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);
}
};
Non dimenticare di aggiungere l'autorizzazione fotocamera corretta nella tua manifest:
<uses-permission android:name="android.permission.CAMERA"/>
E infine se si utilizza un dispositivo Android 4.0 o superiore è possibile utilizzare il metodo:
mCamera.startFaceDetection();
.
.
.
private FaceDetectionListener faceDetectionListener = new FaceDetectionListener() {
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
//Faces have been detected...
}
};
.
.
.
mCamera.setFaceDetectionListener(faceDetectionListener);
Si può andare a questa post che spiega tutto ciò che riguarda quella funzionalità specifiche e fornisce anche un codice sorgente di Android funzionale che si puoi scaricare per farlo da solo.
Saluti!
- 1. Problema di rilevamento dei volti tramite CIDetector
- 2. Libreria di riconoscimento dei volti in Android
- 3. Come scegliere il file cascade per il rilevamento dei volti?
- 4. CamShift + Rilevamento di volti in OpenCv
- 5. Rilevamento di volti lenti su OpenCV?
- 6. Avvia chat video senza interazione dell'utente - Android
- 7. Tecnologia di riconoscimento dei volti e riconoscimento dei volti in phoneGap
- 8. Confronto di due volti in Android
- 9. Riconoscimento dei volti con Android sdk non opencv
- 10. Android - interazione servizio e attività
- 11. Rivelazione di volti e confronto
- 12. Android - Rilevamento funzionalità viso
- 13. Rilevamento pizzico in Android
- 14. Scatta una foto automaticamente senza interazione dell'utente
- 15. Informazioni di codifica dei volti e metadati delle foto
- 16. Cambiare i colori dei volti di un cubo
- 17. Come mostrare il messaggio dei volti nella pagina reindirizzata
- 18. Rilevamento cerchi Hough Android
- 19. Come aggiornare automaticamente un'applicazione Android in esecuzione continua senza interazione dell'utente
- 20. Rilevamento dell'uso dei globali dei registri
- 21. Volti di orologi Pebble
- 22. Rilevamento di percorsi sovrapposti in Android
- 23. Problema rilevamento Face iOS
- 24. rilevamento oggetti android opencv
- 25. android - rilevamento scuotimento
- 26. Rilevamento dei membri utilizzando void_t
- 27. Rilevamento attività Android lancia
- 28. Carnagione rilevamento orientamento Android
- 29. rilevamento javascript regex android
- 30. Android bussola di rilevamento
Non si può usare un gestore come questo: this.refreshTimer = 30 * 1000; this.handlerFaceCapture = new Handler(); this.faceCapture = new FaceCaptureScheduler(); this.handlerFaceCapture .postDelayed (this.handlerFaceCapture, this.refreshTimer); Verrà eseguito lo Scheduler che deve implementare Runnable ogni 30 secondi. – Gilson