2010-11-24 13 views
0

J'ai donc commencé avec ce petit article. Je voulais essayer de faire une application qui prendra des photos en courant en arrière-plan. Pour commencer, je voulais une application qui, une fois ouverte, prendrait simplement une photo toutes les X secondes. Après avoir recréé les classes et les méthodes montrent dans la promenade ci-dessous j'ai rencontré quelques problèmes.Android Camera Application, aperçu crash

http://itp.nyu.edu/~sve204/mobilemedia_spring10/androidCamera101.pdf

Pour commencer son semble que la fonction onCreate met en place tous les objets de l'application, mais si vous essayez de prendre une photo par une autre méthode que onClick (IE appelant directement il) l'application fait HASN 't configurer la toile ou l'aperçu pour le moment.

Ma première question: Existe-t-il une méthode conditionnelle que vous pouvez configurer qui attendra que tous les objets "onCreate" soient créés et que leurs méthodes associées soient appelées et terminées? Comment puis-je attendre que l'application finisse d'assembler ma surface et de démarrer l'aperçu des caméras avant de commencer automatiquement à prendre des photos?

Ma deuxième question: Je dois avoir un aperçu disponible pour prendre des photos. Est-il possible de pousser cette application vers l'arrière (IE en arrière-plan) tout en prenant des photos? Dessiner sur une toile est-il une exigence? (D'après ce que je peux dire AFAIK, vous devez avoir un surfaceholder pour commencer l'aperçu, quand vous mettez en place un autre écran ou une application qui interrompt l'application en cours et ferme la surface/toile sur laquelle vous présentez cet aperçu). Si ma compréhension est correcte sur tout cela, le mieux que je puisse faire est de créer un canevas de 1x1 pixel qui occupera encore l'écran en raison de l'application au premier plan.

Ma troisième question: y a-t-il un moyen de contourner ce problème? Pouvez-vous toujours utiliser l'appareil photo sans avoir besoin de prévisualiser l'aperçu?

Répondre

0
  1. vous devez implémenter SurfaceHolder.Callback et attendez qu'il est surfaceCreated() à appeler. Ensuite, vous pouvez faire toutes les préparations MediaRecorder (setPreviewDisplay, setAudio, setVideo, prepare()).

  2. Vous pouvez superposer SurfaceView avec une autre vue et ainsi le masquer.

Questions connexes