AIR 응용 프로그램 샌드박스에서 응용 프로그램은 사용자가 허용하지 않아도 카메라에 액세스할 수 있습니다. 그러나 Android에서는 응용 프로그램이 응용 프로그램 설명자에 Android CAMERA 권한을 지정해야 합니다.
사용자가 Flash Player에서 카메라에 액세스할 수 있도록 명시적으로 허용해야 Flash Player에서 카메라 출력을 표시할 수 있습니다.
attachCamera()
메서드가 호출되면 Flash Player가 [Flash Player 설정] 대화 상자를 표시하여 사용자에게 Flash Player에서 카메라 및 마이크에 액세스하도록 허용할 것인지 여부를 선택하도록 요청합니다. 사용자가 [허용] 버튼을 클릭하면 Flash Player는 스테이지의 Video 인스턴스에 카메라의 출력을 표시합니다. 사용자가 [거부] 버튼을 클릭하면 Flash Player에서 카메라에 연결할 수 없으며 Video 객체가 아무 것도 표시하지 않습니다.
사용자가 카메라에 대한 액세스를 허용했는지 여부를 확인하려면 다음 코드와 같이 카메라의
status
이벤트(
StatusEvent.STATUS
)를 수신합니다.
var cam:Camera = Camera.getCamera();
if (cam != null)
{
cam.addEventListener(StatusEvent.STATUS, statusHandler);
var vid:Video = new Video();
vid.attachCamera(cam);
addChild(vid);
}
function statusHandler(event:StatusEvent):void
{
// This event gets dispatched when the user clicks the "Allow" or "Deny"
// button in the Flash Player Settings dialog box.
trace(event.code); // "Camera.Muted" or "Camera.Unmuted"
}
사용자가 [허용] 또는 [거부]를 클릭하면 곧바로
statusHandler()
함수가 호출됩니다. 다음 두 메서드 중 하나를 사용하여 사용자가 클릭한 버튼을 확인할 수 있습니다.
-
statusHandler()
함수의
event
매개 변수에는 "Camera.Muted" 또는 "Camera.Unmuted" 문자열이 들어 있는 코드 속성이 포함되어 있습니다. 값이 "Camera.Muted"이면 사용자가 [거부] 버튼을 클릭한 것이므로 Flash Player에서 카메라에 액세스할 수 없습니다. 다음 코드에서 이를 확인할 수 있습니다.
function statusHandler(event:StatusEvent):void
{
switch (event.code)
{
case "Camera.Muted":
trace("User clicked Deny.");
break;
case "Camera.Unmuted":
trace("User clicked Accept.");
break;
}
}
-
Camera 클래스에는
muted
라는 읽기 전용 속성이 포함되어 있으며 이 속성은 사용자가 카메라에 대한 액세스를 거부했는지(
true
) 아니면 허용했는지(
false
)를 Flash Player [개인 정보] 패널에 지정합니다. 다음 코드에서 이를 확인할 수 있습니다.
function statusHandler(event:StatusEvent):void
{
if (cam.muted)
{
trace("User clicked Deny.");
}
else
{
trace("User clicked Accept.");
}
}
전달할 상태 이벤트를 확인하여 카메라 액세스에 대한 사용자 허용 또는 거부를 처리하고 이에 맞게 정리하는 코드를 작성할 수 있습니다. 예를 들어 사용자가 [거부] 버튼을 클릭할 경우 비디오 채팅에 참여하려면 [허용]을 클릭해야 한다는 메시지를 사용자에게 표시하거나, 표시 목록의 Video 객체를 삭제하여 사용 가능한 시스템 리소스를 늘릴 수 있습니다.
AIR에서는 카메라를 사용하기 위한 권한이 동적이지 않기 때문에 Camera 객체에서 status 이벤트를 전달하지 않습니다.