2012-06-27 4 views

답변

4

안드로이드 카메라가 사용 중인지 확인할 방법이 있습니까? 카메라 사용경우

, Camera.open() 당신에게 예외를 제공 할 것입니다. docs에서

,

/** A safe way to get an instance of the Camera object. */ 
public static Camera getCameraInstance(){ 
    Camera c = null; 
    try { 
     c = Camera.open(); // attempt to get a Camera instance 
    } 
    catch (Exception e){ 
     // Camera is not available (in use or does not exist) 
    } 
    return c; // returns null if camera is unavailable 
} 
+0

감사합니다. 카메라가 이미 사용 중이라는 것을 알게되면 어떻게 카메라를 사용할 수 있습니까? catch 블록에서 카메라를 해제 한 다음 다시 열려고합니까? – user1414146

+0

@ user1414146 다른 응용 프로그램이 camera :로 끝날 때까지 기다렸다가 다시 시도하십시오. – COD3BOY

2

난 당신이 당신의 자신의 활동이나 응용 프로그램 카메라 자체에 시작하면이 문제가 될 것입니다 카메라를 실행 활동으로 발표 될 예정이다, 여러 번 요청되는 이유를 알고하지 않습니다 일시 정지 상태로 들어간다.

+5

하지만 백그라운드 서비스를 실행중인 경우 카메라 응용 프로그램이 코드를 실행하는 동안 앞에있을 수 있습니다. – Eric

+0

포 그라운드 앱에 권장되는 것이지만 모든 앱 또는 코드가 이러한 방식으로 작동하는 것은 아닙니다. – Sam

1

나는 이것이 정말로 오래된 질문 인 것을 알고있다. 그러나 나는 같은 것을 궁금해하는 구글 검색으로 우연히 발견했다. 최신 버전의 안드로이드를 사용하면 CameraManager.AvailabilityCallback을 등록하여 카메라 사용 여부를 확인할 수 있습니다. 다음은 몇 가지 예제 코드입니다 :

+0

참고로 안드로이드 5.1에 버그가있을 수 있습니다 (https://code.google.com/p/android/issues/detail?id=164769). 이러한 버전의 경우,''cam_manager.getCameraIdList()'''를 호출하여 서비스를 적절하게 초기화해야 AvayaCallback을 등록 할 수 있습니다. – PressingOnAlways

2

이 방법을 시도해보십시오.이 방법을 시도해 볼 수 있습니다. 그러면 true로 돌아오고 일부 응용 프로그램에서는 카메라가 여전히 사용 중입니다.

public boolean isCameraUsebyApp() { 
    Camera camera = null; 
    try { 
     camera = Camera.open(); 
    } catch (RuntimeException e) { 
     return true; 
    } finally { 
     if (camera != null) camera.release(); 
    } 
    return false; 
} 

그러면 카메라 필요로 다시 장치를 다시 사용자에게 토스트를 나타낸다.

관련 문제