Autore Topic: Scatto automatico foto dopo 5 secondi  (Letto 739 volte)

Offline Il_Putrido

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    xubuntu 14.10
Scatto automatico foto dopo 5 secondi
« il: 10 Novembre 2015, 11:34:11 CET »
0
Ciao a tutti, sono nuovo nel forum.
Sto realizzando un'applicazione Android per la mia tesi di laurea. Prima di tutto ecco le parti di codice che mi danno problemi:
Codice (Java): [Seleziona]
FaceDetectionListener faceDetectionListener = new FaceDetectionListener(){

        @Override
        public void onFaceDetection(Face[] faces, Camera camera) {
            if (faces.length == 0)
                prompt.setText(" No Face Detected! ");
            if(faces.length == 1){
                prompt.setText(String.valueOf(faces.length) + " Face Detected :) ");
                takePicture();
            }
        }
    };

La funzione takePicture è:
Codice (Java): [Seleziona]
public void takePicture() {

        int startUp = 5000;     // millis of waiting before the beginning of the timer
       
        Timer timer = new Timer();      //timer
            //run method is executed everytime the timer has done
            timer.schedule(
                    new TimerTask() {

                        public void run() {
                            camera.takePicture(myShutterCallback, myPictureCallback_RAW, myPictureCallback_JPG);
                        }
                    },
                    startUp
            );

    }

Purtroppo il Logcat dell'errore non lo riesco a copiare perché l'applicazione si riavvia da sola quando mi da errore. 
Vi spiego ora cosa fa: l'oggetto faceDetectionListener ha come metodo onFaceDetection, che riconosce i volti dall'anteprima della fotocamera. Quando ha trovato un volto chiama il metodo takePicture che dovrebbe aspettare 5000 millisecondi prima di scattare la foto. Il problema è che se faces.length da valore 1, passa a valore 0 la foto viene scattata lo stesso dopo appunto 5000 millisecondi da che faces.length==1. Chiaramente non è questo che dovrebbe fare. Vorrei che se il valore di face.length è uguale ad 1 per (ad esempio) 3 secondi consecutivi allora scatta in automatico la foto. Quindi se faces.length è uguale ad 1 per 2 secondi la foto non deve essere scattata. Mi interessa fare una cosa del genere perché altrimenti appena viene riconosciuto un volto, viene subito scattata la foto, ma così facendo potrebbe venire sfocata o il volto potrebbe venire tagliato, il che pregiudica il buon funzionamento dell'applicazione. Inoltre se non c'è un tempo di attesa dopo uno scatto, vengono fatte foto in rapida successione, cosa che non m'interessa.
Mi sembra di aver messo tutto, spero di essere stato il più esaustivo possibile nella spiegazione del mio problema, nonostante la mancanza del Logcat.
« Ultima modifica: 11 Novembre 2015, 00:14:07 CET da Il_Putrido »