Spanish Como realizar auto-focus CameraExClass [Ayuda]

ebqlabs

Active Member
Licensed User
Hola a todos, necesito una ayuda a implementar el auto-focus.

Por ahora cuando hago click en algún objeto me realiza el autofocus y me toma la imagen:

Sub btnFocus_Click
camEx.FocusAndTakePicture
End Sub

Necesito saber:

1) Como realizar auto-focus sin necesidad de presionar un botón.
2) Como realizar un IF para ver si el movil soporta auto-focus.

Quedo atento, desde ya muchas gracias.

Saludos.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola a todos, necesito una ayuda a implementar el auto-focus.

Por ahora cuando hago click en algún objeto me realiza el autofocus y me toma la imagen:

Sub btnFocus_Click
camEx.FocusAndTakePicture
End Sub

Necesito saber:

1) Como realizar auto-focus sin necesidad de presionar un botón.
2) Como realizar un IF para ver si el movil soporta auto-focus.

Quedo atento, desde ya muchas gracias.

Saludos.

Hola:

Con la clase que estas empleando:


B4X:
' Miras que modos tienes con
camEx.GetSupportedFocusModes

' puedes mirar en que modo está con
 camEx.getFocusMode

' Y pones el tipo con 
 camEx.SetContinuousAutoFocus


Saludos
 

ebqlabs

Active Member
Licensed User
Hola:

Con la clase que estas empleando:


B4X:
' Miras que modos tienes con
camEx.GetSupportedFocusModes

' puedes mirar en que modo está con
 camEx.getFocusMode

' Y pones el tipo con
 camEx.SetContinuousAutoFocus


Saludos


Estimado, y ¿como realizo un IF para saber si el dispositivo tiene auto enfoque o no?
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola:

El getSupportedFocusModes te devuelve en un list los modos de autofocos que tiene el dispositivo, miras si hay y ya está. Algo asi:

B4X:
    ' código mas visual :D
    Dim list1 As List
    list1.inicialize
    list1 = camEx.getSupportedFocusModes
    If list1.Size > 0 Then
      ' hay modos de autofoco    
    Else
      ' No soporta autofoco
    End If

' --------- otra forma ----------------------------------------------------
   Dim focusModesList As List = camEx.GetSupportedFocusModes
   If focusModesList.IsInitialized = False Then
       ' No soporta autofoco
   Else
       ' si lo soporta y los pasa a una matriz para luego emplearlos (puedes hacer lo mismo arriba)  
       Dim focus As String
       For i=0 To focusModesList.Size-1
           focus=focusModesList.Get(i) 
       Next
   End If

Saludos
 

ebqlabs

Active Member
Licensed User
Hola:

El getSupportedFocusModes te devuelve en un list los modos de autofocos que tiene el dispositivo, miras si hay y ya está. Algo asi:

B4X:
    ' código mas visual :D
    Dim list1 As List
    list1.inicialize
    list1 = camEx.getSupportedFocusModes
    If list1.Size > 0 Then
      ' hay modos de autofoco   
    Else
      ' No soporta autofoco
    End If

' --------- otra forma ----------------------------------------------------
   Dim focusModesList As List = camEx.GetSupportedFocusModes
   If focusModesList.IsInitialized = False Then
       ' No soporta autofoco
   Else
       ' si lo soporta y los pasa a una matriz para luego emplearlos (puedes hacer lo mismo arriba) 
       Dim focus As String
       For i=0 To focusModesList.Size-1
           focus=focusModesList.Get(i)
       Next
   End If

Saludos


Estimado, gracias por la ayuda. Pero tengo un dispositivo que no tiene auto-focus
y aún así me dice que si lo soporta.


Lo otro, no logro realizar automático el auto-focus sin la necesidad de realizar la acción

camEx.FocusAndTakePicture

Quisiera saber como lo puedo realizar automático sin la opción camEx.FocusAndTakePicture (Focos y saca foto).

Saludos-.
 

JordiCP

Expert
Licensed User
Longtime User
Por lo que recuerdo de la cámara (me peleé mucho con ella hace unos años)...

Creo que lo que estás preguntando no es el modo autofocus (que se pide una sola vez cuando se quiere sacar una foto, y espera al callback cuando está listo), sino el modo autofocus contínuo (FOCUS_MODE_CONTINUOUS_PICTURE, o en su defecto, también se puede utilizar para fotos, el FOCUS_MODE_CONTINUOUS_VIDEO).
Si tu dispositivo soporta estos modos y lo configuras como tal, no quiere decir que siempre estará enfocado, sino que contínuamente irá intentando enfocar, lo que en la práctica significa que, cuando quieras sacar la foto, seguirá siendo recomendable llamar al FocusAndTakePicture, con la diferencia que irá mucho más rápido pues es mas probable que ya esté totalmente enfocado, o casi.

Si lo que necesitas es la máxima rapidez al tomar una fotografía después de pulsar el botón y la opción anterior no es suficiente, otra opción sería (también suponiendo que el dispositivo lo soporta) el FOCUS_MODE_INFINITY. Cualquier objeto que esté a una distancia no demasiado cercana estará siempre 'razonablemente' enfocado. En este modo, no necesitas (de hecho, no se permite) llamar al FocusAndTakePicture sino directamente al TakePicture.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Estimado, gracias por la ayuda. Pero tengo un dispositivo que no tiene auto-focus
y aún así me dice que si lo soporta.

Saludos-.

Hola:

Jordi ya te ha explicado un modo, y si con el que yo te dije te dice que si lo soporta, pues está claro que lo soporta, igual el problema es que lo soporta con la cámara delantera y no la trasera, por que para cambiar de cámara se lo tienes que decir. Si el sistema te está diciendo algo no puedes hacer nada contra lo que te dice a menos que le pongas una excepción.
Mira en la lista que tipo de autofoco te devuelve y ponle ese.

Saludos
 
Top