I AIR-programmets säkerhetssandlåda kan programmet få tillgång till alla kameror utan användarens tillåtelse. På Android måste programmet däremot ange Android-behörigheten CAMERA i programbeskrivningsfilen.
Innan Flash Player kan visa en kameras utdata måste användaren uttryckligen tillåta Flash Player att få åtkomst till kameran. När
attachCamera()
-metoden anropas, visas dialogrutan Flash Player-inställningar som uppmanar användaren att antingen tillåta eller neka Flash Player åtkomst till kameran och mikrofonen. Om användaren klickar på Tillåt, visas kamerainspelningen i Video-instansen på scenen. Om användaren klickar på Neka, kan inte Flash Player ansluta till kameran och videoobjektet visar ingenting.
Om du vill ta reda på om användaren tillåter åtkomst till kameran, kan du avlyssna kamerans
status
-händelse (
StatusEvent.STATUS
), enligt exempel i följande kod:
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"
}
Funktionen
statusHandler()
anropas så fort som användaren klickar på Tillåt eller Neka. Du kan ta reda på vilken knapp användaren klickade på med någon av de här två metoderna:
-
event
-parametern för
statusHandler()
-funktionen innehåller en kodegenskap som innehåller strängen ”Camera.Muted” eller ”Camera.Unmuted”. Om värdet är ”Camera.Muted” klickade användaren på Neka och Flash Player får inte åtkomst till kameran. Ett exempel på det här visas i följande utdrag:
function statusHandler(event:StatusEvent):void
{
switch (event.code)
{
case "Camera.Muted":
trace("User clicked Deny.");
break;
case "Camera.Unmuted":
trace("User clicked Accept.");
break;
}
}
-
Klassen Camera innehåller en skrivskyddad egenskap med namnet
muted
som specificerar om användaren nekar åtkomst till kameran (
true
) eller tillåter åtkomst (
false
) på panelen Sekretess i Flash Player. Ett exempel på det här visas i följande utdrag:
function statusHandler(event:StatusEvent):void
{
if (cam.muted)
{
trace("User clicked Deny.");
}
else
{
trace("User clicked Accept.");
}
}
Genom att kontrollera när statushändelsen ska skickas, kan du skriva kod som hanterar när användaren tillåter eller nekar åtkomst till kameran och rensa upp på rätt sätt. Om användaren t.ex. klickar på Neka kan du visa ett meddelande om att avändaren måste klicka på Tillåt om han eller hon vill delta i en videochattsession, eller så kan du i stället kontrollera att videoobjektet i visningslistan tas bort för att frigöra systemresurser.
I AIR skickar ett Camera-objekt inga statushändelser, eftersom behörigheten att använda kameran inte är dynamisk.