2016-10-14 1 views
0

내 응용 프로그램에 camera2 api를 사용하고 있지만 Redmi note 3과 같은 장치 중 일부는 롤리팝 Android 버전을 사용하는 경우에도 지원하지 않습니다. 이제 내 쿼리 내가 장치가 내 응용 프로그램현재 장치에 camera2 API 지원 여부 확인 방법

+0

체크 아웃 [this] (http://stackoverflow.com/a/31240881/5985958) 대답 – Umarov

답변

0

을에 카메라 2 API를 지원이 아닌지 확인 당신이 후면이있는 경우 당신은 당신의 장치

public static boolean checkCameraFront(Context context) { 
if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT)) { 
    return true; 
} else { 
    return false; 
    } 
} 

체크 전면 카메라가있는 경우 코드 아래
확인을 시도 할 방법입니다 카메라 내장

public static boolean checkCameraRear() { 
int numCamera = Camera.getNumberOfCameras(); 
if(numCamera > 0) { 
    return true; 
} else { 
    return false; 
    } 
} 
+0

하지만 안드로이드의 카메라 api도 확인할 수 있습니다 ... 어떻게 그것을 camera2 API 지원 및 카메라 API 지원에 대한 지원을 차별화 수있는 모든 장치. –

+0

확인 하시겠습니까? 당신이 시도한 코드를 업로드 해주세요. –

+0

이 말은 http://stackoverflow.com/a/31240881/6460582입니다.하지만 장치에 camera2 API가 지원되는지 확인하는 방법. –

0

인증을 통과 한 모든 Android 기기는 API 레벨 21 (Lollipop)에서 시작하는 카메라 2 API를 지원합니다.

일부 장치는 수동 제어 나 RAW 캡처와 같은 가능한 모든 기능을 지원하지 않을 수 있지만 기본 API는 항상 작동해야합니다.

+0

예. 당신은 바로 사물함 장치에서 항상 시작되는 카메라 미리보기입니다.하지만 redmi note 3와 같은 일부 장치에서는 이미지가 캡처 단추를 때리면 캡처되지 않습니다 ... 이제 어떻게 해결할 수 있습니까? 다른 롤리팝 장치는 동일한 –

+0

장치 별 버그가있을 수 있지만 기본 이미지 캡처가 실제로 작동해야합니다. 그러나 디버깅을하려면 앱의 전체 시스템 로그가 필요합니다. –

0

난 당신이

0

다음 장치에 카메라가 전체 또는 제한 카메라 2 API 지원을 결정하기 위해 조각이야 것이 도움이 될 수 바란다 this를 방문하십시오 (단지 전화 checkCamera2Support 방법) :

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
     public boolean allowCamera2Support(int cameraId) { 
      CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 
      try { 
       String cameraIdS = manager.getCameraIdList()[cameraId]; 
       CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraIdS); 
       int support = characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL); 

       if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) 
        Log.d(TAG, "Camera " + cameraId + " has LEGACY Camera2 support"); 
       else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED) 
        Log.d(TAG, "Camera " + cameraId + " has LIMITED Camera2 support"); 
       else if(support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL) 
        Log.d(TAG, "Camera " + cameraId + " has FULL Camera2 support"); 
       else 
        Log.d(TAG, "Camera " + cameraId + " has unknown Camera2 support?!"); 

      return support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED || support == CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL; 
     } 
     catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } 
     return false; 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    private void checkCamera2Support() { 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      if(getNumberOfCameras() == 0) { 
        Log.d(TAG, "0 cameras"); 
      }else { 
       for (int i = 0; i < getNumberOfCameras(); i++) { 
        if (!allowCamera2Support(i)) { 
         Log.d(TAG, "camera " + i + " doesn't have limited or full support for Camera2 API"); 
        }else{ 
         // here you can get ids of cameras that have limited or full support for Camera2 API 
        } 
       } 
      } 
     } 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    public int getNumberOfCameras() { 
     CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE); 
     try { 
      return manager.getCameraIdList().length; 
     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } catch(AssertionError e) { 
      e.printStackTrace(); 
     } 
     return 0; 
    }