2015-10-15 14 views
9

Özel kameramda netleme özelliği özelliğini uygulamak istiyorum. Bu Google'da https://github.com/googlesamples/android-Camera2BasicUygula Makinenin içinde odaklanmak için dokunun 2 API

tarafından sağlanan temel kod İşte ben kimse Camera2 API yardım lütfen uygularsa benim özelliği eklemek gerektiğini düşünüyorum kod parçacığı bu!

private void lockFocus() { 
    try { 
     // This is how to tell the camera to lock focus. 
     mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, 
       CameraMetadata.CONTROL_AF_TRIGGER_START); 
     // Tell #mCaptureCallback to wait for the lock. 
     mState = STATE_WAITING_LOCK; 
     mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback, 
       mBackgroundHandler); 
    } catch (CameraAccessException e) { 
     e.printStackTrace(); 
    } 
} 

cevap

12

Sen kullanıcı tarafından dinlendiğini alana otomatik odaklama ve otomatik pozlama bölgesini ayarlamak gerekir.

Anahtarlar CONTROL_AF_REGIONS ve CONTROL_AE_REGIONS'dur. Onlar için

birimleri sensörü active array coordinate system içindedir, bu nedenle UI dokunmatik Önizleme görünümüne göre koordinatları koordinatlarından çevirmek gerekecek ve oradan aktif dizisi koordinatları için.

Önizlemenizin en boy oranı sensörünkiyle eşleşiyorsa, o zaman bu basittir; değilse, önizleme çıktısını oluşturmak için yapılan kırpma için ayarlamanız gerekir. Kırpma çalışmalarının şu an için en iyi şeması şu anda here. Ayrıca, yakınlaştırma uygularsanız, hesaplamalarınızda yakınlaştırma faktörünü de dahil etmek isteyeceğinizi unutmayın. Eğer bölgeyi hesapladıktan sonra

, muhtemelen (genellikle normal bir önizleme için kullanılır yerine CONTINUOUS_PICTURE) AUTO AF modunu ayarlayın ve ardından AF tetiklemek isteyeceksiniz. AF'yi yaklaştırdığınızda (yakalama sonuçlarında AF durumuna bakın, AF_STATE_FOCUSED_LOCKED değerini bekleyin), odaklanmış bir fotoğraf çekmeniz iyi olur. Bir süre sonra normal çalışmaya dönmek isterseniz veya kullanıcı odaklanmak için dokunuşu iptal ederse, AF modunu tekrar CONTINUOUS_PICTURE olarak değiştirin.

+6

örnek kod verebilir misiniz? –

+2

örnek kodu size harika bir yardımcı olacaktır. –

1
  1. Kullanıcının ekrana dokunacağı noktayı bulmak için onTouch dinleyicisini kullanın.
  2. Bu konuma göre a/bazı MeteringRectangle(s) hesaplayınız.
  3. bunu kullanın ölçüm dikdörtgenler CaptureRequest.CONTROL_AF_REGION & CaptureRequest.CONTROL_AE_REGION

  4. Sonra

  5. CameraMetadata.CONTROL_AE_TRIGGER_START için
  6. CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER CameraMetadata.CONTROL_AF_TRIGGER_START için CaptureRequest.CONTROL_AF_MODE_AUTO

  7. CaptureRequest.CONTROL_AF_TRIGGER için CaptureRequest.CONTROL_AF_MODE set ayarlamak için yakalama isteği oluştur


Here tam bir örnek bulabilirsiniz.


İlgili konular