2014-05-08 26 views
11

Mam wewnątrz aplikacji aplikację aparatu i chcę ją ustawiać automatycznie w sposób ciągły w taki sam sposób, w jaki działa aparat telefonu. Znalazłem tryby FOCUS_MODE_CONTINUOUS_VIDEO i FOCUS_MODE_CONTINUOUS_PICTURE, ale nie są one obsługiwane przez niektóre telefony HTC Gingerbread, które testuję.Automatyczne ustawianie ostrości w Androidzie, gdy tryby ciągłego automatycznego ustawiania ostrości nie są obsługiwane.

To, co robię, aby ustalić, czy mogę korzystać z tych trybów:

 Camera.Parameters parameters = mCamera.getParameters(); 
     List<String> supportedFocusModes = parameters.getSupportedFocusModes(); 

     if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && 
      supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) { 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
     } 
     else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) { 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); 
     } 
     else if (supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { 
      // auto focus on request only 
      parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
     } 

Działa na różnych telefonach HTC Piernik, nie uzyskać ciągłe tryby powrotem, ale mam „auto ". Co pozwala mi automatycznie ustawić ostrość na żądanie (gdy zadzwonię pod numer mCamera.autoFocus(null), ale aparat nie ustawi ostrości, jeśli użytkownik poruszy kamerę.)

Nie mogę ustawić trybu ostrości na nic, czego kamera nie obsługuje, jeśli to zrobię, pokazuje się puste.

Jednym z rozwiązań, które starałem się nazywać mCamera.autoFocus(null) na zegar. Ale to powoduje, że aparat do skierowania w sposób ciągły, nawet jeśli znajduje się ona w centrum uwagi.

Czy istnieje sposób, aby wdrożyć ciągłego autofokusu Doświadczenie na tych telefonach Kiedy patrzę na aplikację aparatu HTC na tych telefonach, ma ona ciągły autofokus - gdy poruszasz się po kamerze, ponownie się skupiam i nie zachowujesz ponownego skupienia obraz jest ostry.

+0

Po dużo więcej godzin spędzonych na to, że śledztwo w sprawie rozwiązania [tutaj] (http://stackoverflow.com/a/10555471/1481500) – kos

Odpowiedz

3

Musieliśmy obsługiwać bardzo szeroki zakres telefonów. Więc moim rozwiązaniem było w końcu obsłużyć każdy przypadek inaczej.

W scenariuszu z telefonami bez ciągłego wsparcia automatycznego ogniskowania, zaimplementowałem narzędzie do słuchania przyspieszeniomierza za pomocą SensorManager i wyzwalania mCamera.autoFocus (...) za każdym razem, gdy użytkownik poruszy kamerę.

Było też kilka starszych tabletów, które obsługują tylko stały fokus (kto by tego użył!), W takim przypadku zdjęcie trzeba było od razu zabrać - a nie oddzwanianie.

W przypadku większości nowoczesnych telefonów fragment kodu powyżej był w porządku, aby używać FOCUS_MODE_CONTINUOUS_PICTURE.

+0

Cześć [kos] (http://stackoverflow.com/ users/1481500/kos), mam podobny przypadek użycia, aby osiągnąć. Czy możesz podać więcej szczegółów na temat tej użyteczności? –

+0

@kos, czy mógłbyś wyjaśnić, w jaki sposób definiujesz, czy urządzenie obsługuje funkcję ciągłego automatycznego ustawiania ostrości? –

0

mam podobny pb na moim samsung S4 i rozwiązać go z:

camera.setParameters(parameters); 
    camera.autoFocus(null); 

To jest sugerować w dokumencie Google here.

Aby wprowadzić parametry kamery, aplikacja musi zadzwonić pod numer setParameters(Camera.Parameters).