2013-10-14 86 views
1

我正在使用一些基於瀏覽器的使用麥克風和攝像頭的Flash應用程序。我只有在用戶已經授權訪問攝像頭時才需要它。我檢查訪問是否已經存在,以防用戶允許訪問並檢查「記住」設置。如果未授予訪問權限,則可能有兩點:用戶尚未提示對話,或者他檢查了「記住」並被拒絕訪問。有沒有辦法確定這兩個現在適用哪一個?基本上,我想確定這個問題的答案:「用戶是否記得拒絕訪問麥克風/凸輪?」AS3,Flash:如何判斷安全設置是否被記住?

+0

據我所知,這是不可能的,但我會看看周圍的文檔,看看我能挖東西。爲什麼你想區分這兩種情況? – Aralicia

+0

訪問之後,我需要能夠繼續執行程序。如果用戶還沒有記住「拒絕」選項 - 我嘗試訪問麥克風後會出現提示,並且我可以收聽麥克風StatusEvent.STATUS以確定是否提供訪問。如果它被記住「否認」 - 不會出現提示。我可以手動調用安全設置窗口,但是在我點擊輻射選項「allow」之後,它會導致StatusEvent.STATUS事件,而不是在關閉此安全窗口之後。除此之外,如果用戶離開「否認」並關閉窗口 - 任何事件都不會觸發,所以我不會知道它。 – pokrishka

+0

我明白了。沒有API支持的方式來檢測SecurityPanel的存在,但我想我記得一個較舊的帖子,它指出以某種方式使用的Bitmapdata.draw()在Panel打開時會生成SecurityError。此解決方法可能仍然有效。 – Aralicia

回答

0

麥克風,你可以通過創建一個麥克風類,並看到getMicrophone功能檢查返回null:var mic:Microphone = Microphone.getMicrophone();

這從http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d0f.html採取: 當你的應用程序調用Microphone.getMicrophone()方法時,Flash Player顯示「Flash Player設置」對話框,該對話框提示用戶允許或拒絕Flash Player訪問系統上的相機和麥克風。用戶單擊此對話框中的「允許」按鈕或「拒絕」按鈕後,將調度StatusEvent。那的StatusEvent實例的code屬性指示麥克風訪問是否被允許或拒絕,如本例所示:

import flash.media.Microphone; 

var mic:Microphone = Microphone.getMicrophone(); 
mic.addEventListener(StatusEvent.STATUS, this.onMicStatus); 

function onMicStatus(event:StatusEvent):void 
{ 
    if (event.code == "Microphone.Unmuted") 
    { 
     trace("Microphone access was allowed."); 
    } 
    else if (event.code == "Microphone.Muted") 
    { 
     trace("Microphone access was denied."); 
    } 
} 
+0

不幸的是,這將無法正常工作,正如我所描述的 - Doorhandle - 我試圖確定情況用戶「記住」拒絕訪問。在這種情況下,不會有允許/拒絕彈出窗口,也不會有StatusEvent.STATUS,因爲沒有更改。 – pokrishka

相關問題