2015-01-27 32 views
8

Szukam przykładu ręcznego ustawiania ostrości w camera2 w Androidzie. Próbowałem uzyskać minimalną odległość ogniskowania i dostępne ogniskowe pokazane poniżej, ale to nie pomogło. Jak kontrolować odległość ogniskowania?Ręczne ustawianie ostrości w camera2, android

float minimumLens = characteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE); 

float[] lensDistances = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);  

Muszę kontrolować go za pomocą paska wyszukiwania. Z góry dzięki.

Odpowiedz

5
switch (seekBar.getId()) { 
      case R.id.sb_focus: 
       float minimumLens = mCameraCharacteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE); 
       float num = (((float) i) * minimumLens/100); 
       mPreviewBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, num); 
       int showNum = (int) num; 
       mSeekBarTextView.setText("focus:" + showNum); 
       break;} 

Uważaj, CONTROL_AF_MODE powinien być WYŁĄCZONY. Kod
https://github.com/pinguo-yuyidong/Camera2/blob/master/app/src/main/java/us/yydcdut/androidltest/ui/DisplayFragment.java
w linii 1109

+0

co ręcznego ustawiania ostrości na jednym obszarze? Jak mogę to zrobić? – user0770

+0

@yydcdut: Niestety to rozwiązanie nie działa na Samsung Galaxy S7. Chociaż nie wypróbowałem go na żadnym innym telefonie Samsung, podejrzewam, że większość telefonów Samsung cierpi na ten problem. – unshul

+0

Tylko dla przyszłych czytelników, wierzę w ten przykładowy kod, który chcesz: mPreviewBuilder.set (CaptureRequest.LENS_FOCUS_DISTANCE, minimumLens); Nie jest jasne, czym dokładnie jest num, ale jest to w jakiś sposób związane z procentem ogniskowej, prawdopodobnie dla seekBar. – jranalli