una samsung quitar que para muy lejos hacer frontal enfoque enfoca como cerca celular camara bien aplicaciones android camera autofocus

android - samsung - mi camara no enfoca de lejos



Android: ¿Comprobar si la cámara admite el enfoque automático? (5)

Para la versión 2.1 y superior de la API de Android, podemos usar el contexto:

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)

Pero antes de la versión 2.1, ¿cómo podemos realizar la misma operación? ¿Hay algo como esto que no implique invocar Camera.open y luego getParameters ?



estoy adivinando: No utilice la constante desconocida.

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)

Debiera ser:

getPackageManager().hasSystemFeature("android.hardware.camera.autofocus")

Fue una breve visión de los desarrolladores para utilizar constantes aquí. Resuelve el problema de saber si un dispositivo que ejecuta una API que conoce una característica tiene una característica. pero falla en el caso que acaba de mencionar ... realmente hacen que el soporte de múltiples niveles de API sea difícil.

Actualizado : solo lo probé yo mismo ... PackageManager.hasSystemFeature () solo apareció en el nivel 5 de la API. Estaba tratando de agregar esa verificación a mi código que puede muy bien ser compatible con el nivel 3 (1.5) de la API, pero que podría beneficiarse del auto de la cámara parece que tengo que elegir el soporte 1.5 o poder usar el enfoque automático ... o mover mi compatibilidad hacia atrás al nivel 5 ... o implementar esto http://www.java.net/forum/topic/java-tools/java-development-tools/wwyt-conditional-compilation-pre-process ... sí, a la derecha.

Realmente hacen que sea difícil soportar múltiples versiones. Lo siento 1.5 y 1.6 y 2.0 usuarios. ya que mi dispositivo está en 2.2 ese será mi resultado final.


private void getSuppourtedFocusedModes(Camera camera) { final Camera.Parameters parameters = camera.getParameters(); List<String> supportedFocusModes = parameters.getSupportedFocusModes(); LogUtils.infoMsg("supportedFocusModes " + supportedFocusModes); for (String mode : supportedFocusModes) { LogUtils.infoMsg("supportedFocusModes " + mode); } }


CameraManager cameraManager = (android.hardware.camera2.CameraManager) getSystemService(CAMERA_SERVICE); int[] afModes = cameraManager.getCameraCharacteristics("0").get(CameraCharacteristics.CONTROL_AF_AVAILABLE_MODES); if (afModes.length <= 1) {Log.d(TAG, "Camera doesn''t have autofocus");} else {Log.d(TAG, "Camera has autofocus");} Log.d(TAG, "CONTROL_AF_AVAILABLE_MODES:"); for (int position : afModes) { switch (afModes[position]) { case 0: Log.d(TAG, "CONTROL_AF_MODE_OFF (0)"); break; case 1: Log.d(TAG, "CONTROL_AF_MODE_AUTO (1)"); break; case 2: Log.d(TAG, "CONTROL_AF_MODE_MACRO (2)"); break; case 3: Log.d(TAG, "CONTROL_AF_MODE_CONTINUOUS_VIDEO (3)"); break; case 4: Log.d(TAG, "CONTROL_AF_MODE_CONTINUOUS_PICTURE (4)"); break; case 5: Log.d(TAG, "CONTROL_AF_MODE_EDOF (5)"); break; default: Log.d(TAG, String.valueOf(afModes[position])); } }


List<String> supportedFocusModes = camera.getParameters().getSupportedFocusModes(); boolean hasAutoFocus = supportedFocusModes != null && supportedFocusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)