2014-04-29 20 views
6

Kullanıcının fotoğraf çekmesini sağlayan bir kamera uygulamasına sahibim. Ana ekranımda, bir SurfaceView üzerinde çalışan bir kamera var. Kullanıcı bir fotoğraf çektiğinde, camera.autoFocus'u ve AutoFocusCallback geri aramada camera.takePicture olarak adlandırıyorum. Ardından fotoğrafı kaydedip fotoğrafı önizlemek için başka bir etkinliğe giderim. Ben kamera sayfası (onPause) ve camera.startPreview() geri geldiğinde (onResume) bırakarak camera.stopPreview().Android Camera.autoFocus ve FOCUS_MODE_CONTINUOUS_PICTURE

Fotoğraf makinesi FOCUS_MODE_CONTINUOUS_PICTURE kullanılarak başlatıldı. Fotoğraf makinesine geri döndüğümde fotoğraf makinesini geri dönüştürmüyorum (bu, ~ 2 saniye süren yavaş bir işlem olduğu için), ancak kamera daha önce başlatılmışsa, sadece ön izlemeyi çağırın.

İşte benim sorunum. İlk fotoğrafı çekmeden önce sürekli otomatik odaklama gayet iyi çalışıyor, çünkü FOCUS_MODE_CONTINUOUS_PICTURE başlangıçta kamera üzerinde ayarlanmış. Ancak camera.autoFocus çağrıldıktan sonra FOCUS_MODE_CONTINUOUS_PICTURE çalışmayı durdurur. Daha sonra aynı ekrana döndüğümde ve startPreview'i aradığımda, sürekli otomatik odaklama artık işe yaramaz.

Fotoğraf makinesini yeniden başlatmaya gerek kalmadan sürekli otomatik netlemeyi yeniden başlatmanın bir yolu var mı? Kameranın yeniden başlatılmasını önlemek isterim, çünkü bu kullanıcı için birkaç saniyelik gecikmeye neden olur.

cevap

17

Sorunu camera.cancelAutoFocus() öğesini çağırarak çözdüm. Bu sürekli otomatik netleme tekrar tekme neden oldu.

+2

Uygulamalar sürekli odağı devam ettirmek istiyorsa, cancelAutoFocus çağrılmalıdır. Önizlemeyi yeniden başlatmak, sürekli otomatik netlemeye devam etmeyecektir. http://developer.android.com/reference/android/hardware/Camera.Parameters.html#FOCUS_MODE_CONTINUOUS_PICTURE –