摄像头、麦克风、剪贴板、鼠标和键盘访问

本文详细解释了如何在Flash Player中访问用户的摄像头和麦克风,包括隐私对话框、权限设置、方法调用及注意事项。了解如何正确处理摄像头和麦克风的访问请求,确保用户体验与应用功能的实现。

当 SWF 文件试图使用 Camera.get() 或 Microphone.get() 方法访问用户的摄像头或麦克风时,Flash Player 将显示一个“隐私”对话框,用户可以在该对话框中允许或拒绝对其摄像头或麦克风的访问。用户和管理用户还可以通过 mms.cfg 文件、“设置 UI”和“设置管理器”中的控制基于站点或全局禁用摄像头访问(请参阅管理员控制用户控制)。用户加以限制后,Camera.get() 和 Microphone.get() 方法均返回 null 值。可以使用 Capabilities.avHardwareDisable 属性确定是已经通过管理方式禁止了 (true) 对摄像头和麦克风的访问,还是允许 (false) 对摄像头和麦克风的访问。

System.setClipboard() 方法允许 SWF 文件用纯文本字符串替换剪贴板内容。这不会带来任何安全性风险。为避免因剪切或复制到剪贴板的密码和其它敏感数据所带来的风险,并未提供相应的 getClipboard() 方法。

运行于 Flash Player 中的应用程序只能监视在其焦点以内发生的键盘和鼠标事件。运行于 Flash Player 中的内容不能检测其它应用程序中的键盘或鼠标事件。


http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c99.html


 

//摄像头
flash.media.Camera
Camera.getCamera(); 

//麦克风
flash.media.Microphone;
Microphone.getMicrophone();


flash.system.Capabilities;
Capabilities.avHardwareDisable;


flash.system.System
System.setClipboard("");




 flash.media.Camera

 

 

使用 Camera 类可从连接到运行 Flash Player 的计算机的摄像头中捕获视频。使用 Video 类可在本地监视视频。使用 NetConnection 和 NetStream 类可将视频传输到 Flash Media Server。Flash Media Server 可以将视频流发送到其它服务器,并向运行 Flash Player 的其它客户端广播此视频流。

有关捕获音频的信息,请参阅 Microphone 类。

重要说明:Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问摄像头。确保应用程序窗口大小至少为 215 x 138 个像素;这是显示该对话框所需的最小大小。

要创建或引用 Camera 对象,请使用 getCamera() 方法。

另请参阅:
flash.media.Microphone
语言版本:
3.0
Player 版本:
Flash 9, AIR 1.0

flash.media.Microphone
使用 Microphone 类可从连接到运行 Flash Player 或 Adobe AIR 的计算机的麦克风中捕获音频。使用 Microphone 类可在本地监视音频。使用 NetConnection 和 NetStream 类可将音频传输到 Flash Media Server。Flash Media Server 可以将音频发送到其它服务器,并向运行 Flash Player 或 Adobe AIR 的其它客户端广播此音频。

有关捕获视频的信息,请参阅 Camera 类。

重要说明:Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。请确保应用程序窗口大小至少为 215 x 138 像素,这是显示对话框所需的最小尺寸。

要创建或引用 Microphone 对象,请使用 Microphone.getMicrophone() 方法。

警告:对于应用程序安全沙箱以外的内容,会显示“隐私”对话框,用户可以从中选择是允许还是拒绝对麦克风的访问。此对话框要求应用程序窗口大小至少为 215 x 138 个像素。对于应用程序安全沙箱内的 Adobe AIR 内容,将允许访问麦克风,且不再显示该对话框。


另请参阅:
flash.media.Camera
语言版本:
3.0
Player 版本:
Flash 9



flash.system.Capabilities
Capabilities 类提供一些属性,这些属性描述了承载 SWF 文件的系统和播放器。例如,手机屏幕可以有 100 个正方形像素(黑白),而 PC 屏幕则可以有 1000 个正方形像素(彩色)。通过使用 Capabilities 对象来确定用户所拥有的设备的类型,可以向尽可能多的用户提供适当的内容。如果熟悉设备的功能,则可以通知服务器发送合适的 SWF 文件,或是通知 SWF 文件变更其播放方式。 Capabilities 类提供一些属性,这些属性描述了承载 HTML 内容(和 SWF 内容)的系统和运行时。通过使用 Capabilities 对象来确定用户所拥有的计算机的类型,可以向尽可能多的用户提供适当的内容。了解计算机的功能后,您可以加载适当的内容或使用代码更改其呈现方式。

但 Adobe AIR 的有些功能没有作为 Capabilities 类的属性列出。这些功能是其它类的属性:

属性说明
NativeApplication.supportsDockIcon操作系统是否支持系统停靠图标。
NativeApplication.supportsMenu操作系统是否支持全局应用程序菜单栏。
NativeApplication.supportsSystemTrayIcon操作系统是否支持系统任务栏图标。
NativeWindow.supportsMenu操作系统是否支持窗口菜单。
NativeWindow.supportsTransparency操作系统是否支持透明窗口。

请勿 使用 Capabilities.osCapabilities.manufacturer 来根据操作系统确定功能。以操作系统来决定功能是个不良习惯,因为如果应用程序没有考虑到所有潜在的目标操作系统,这会产生问题。建议使用与要测试的功能相对应的属性。

可使用 GETPOST HTTP 方法发送功能信息,这些信息作为一个 URL 编码的字符串存储在 Capabilities.serverString 属性中。下例显示了支持 MP3、具有 1600 x 1200 像素分辨率、运行 Windows XP 并且安装有输入法编辑器 (IME) 的计算机的服务器字符串:

A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t&
     SB=f&DEB=t&V=WIN%209%2C0%2C0%2C0&M=Adobe%20Windows&
     R=1600x1200&DP=72&COL=color&AR=1.0&OS=Windows%20XP&
     L=en&PT=External&AVD=f&LFD=f&WD=f&IME=t

下表列出了 Capabilities 类的属性和相应的服务器字符串:

Capabilities 类属性服务器字符串
avHardwareDisableAVD
hasAccessibilityACC
hasAudioA
hasAudioEncoderAE
hasEmbeddedVideoEV
hasIMEIME
hasMP3MP3
hasPrintingPR
hasScreenBroadcastSB
hasScreenPlaybackSP
hasStreamingAudioSA
hasStreamingVideoSV
hasTLSTLS
hasVideoEncoderVE
isDebuggerDEB
languageL
localFileReadDisableLFD
manufacturerM
maxLevelIDCML
osOS
pixelAspectRatioAR
playerTypePT
screenColorCOL
screenDPIDP
screenResolutionXR
screenResolutionYR
versionV

 

还有一个 WD 服务器字符串,用于指定是否禁用无窗口模式。如果与 Web 浏览器不兼容或用户在 mms.cfg 文件中进行了相应设置,则可以在 Flash Player 中禁用无窗口模式。没有对应的 Capabilities 属性。

Capabilities 类的所有属性都是只读的。

语言版本:
3.0
Player 版本:
Flash 9, AIR 1.0








flash.system.System
System 类包含与发生在用户计算机上的某些操作相关的属性,如具有共享对象的操作、摄像头和麦克风的本地设置和剪贴板的使用。

其它属性和方法在 flash.system 包的其它类中:Capabilities 类、IME 类和 Security 类。

此类只包含静态方法和属性。无法创建 System 类的新实例。

另请参阅:
flash.system.Security
flash.events.IMEEvent
语言版本:
3.0
Player 版本:
Flash 9
flash.media.Camera.getCamera(name:String=null):Camera
返回对用于捕获视频的 Camera 对象的引用。要开始捕获视频,必须将 Camera 对象附加到 Video 对象(请参阅 Video.attachCamera() )。要将视频传输到 Flash Media Server,请调用 NetStream.attachCamera() 以将 Camera 对象附加到 NetStream 对象。

getCamera() 方法的多次调用会引用相同的摄像头驱动程序。因此,如果代码包含诸如 firstCam:Camera = getCamera()secondCam:Camera = getCamera() 之类的代码,则 firstCamsecondCam 会引用同一个摄像头,该摄像头为用户的默认摄像头。

通常不应为 name 参数传递值,而只是使用 getCamera() 来返回对默认摄像头的引用。通过“摄像头设置”面板(将在本节的后面进行讨论),用户可以指定 Flash Player 应使用的默认摄像头。

您不能使用 ActionScript 来设置用户用于访问摄像头的 Allow 或 Deny 权限设置,但可以显示“Adobe Flash Player 设置”摄像头设置对话框,用户可以在其中设置摄像头权限。当使用 attachCamera() 方法的 SWF 文件尝试将 getCamera() 方法返回的摄像头附加到 Video 或 NetStream 对象时,Flash Player 将显示一个对话框,用户可从中选择是允许还是拒绝访问摄像头。(确保应用程序窗口大小至少为 215 x 138 个像素;这是 Flash Player 显示该对话框所需的最小大小。)当用户对摄像头设置对话框做出响应时,Flash Player 将在指示用户响应的 status 事件中返回信息对象:Camera.muted 指示用户拒绝访问摄像头;Camera.Unmuted 指示用户允许访问摄像头。要在不处理 status 事件的情况下确定用户是拒绝还是允许访问摄像头,请使用 muted 属性。

用户可以为特定的域指定永久保密性设置,方法是在 SWF 文件播放时右键单击 (Windows 和 Linux) 或按住 Control 的同时单击 (Macintosh),选择“设置”,打开“保密性”对话框,然后选择“记住”。如果用户选择“记住”,Flash Player 将不再询问用户是允许还是拒绝此域的 SWF 文件访问摄像头。

注意:如果用户已通过选择“Flash Player 设置”对话框中的“记住”来拒绝访问摄像头,则 attachCamera() 方法将不会调用该对话框来允许或拒绝对摄像头的访问。在这种情况下,您可以通过使用 Security.showSettings(SecurityPanel.PRIVACY) 为用户显示“Flash Player 隐私”面板,提示用户更改 Allow 或 Deny 设置。

如果 getCamera() 返回 null,则表明摄像头正由另一个应用程序使用,或者系统上没有安装摄像头。要确定是否安装了任何摄像头,请使用 names.length 属性。要显示 Flash Player 的“摄像头设置”面板(让用户选择将由 getCamera() 引用的摄像头),请使用 Security.showSettings(SecurityPanel.CAMERA)

扫描硬件以找到摄像头需要花一些时间。当 Flash Player 找到至少一个摄像头后,在该播放器实例的生存期内将不再扫描硬件。不过,如果 Flash Player 没有找到任何摄像头,则在每次调用 getCamera 时都进行扫描。这在用户忘记连接摄像头时非常有用;如果 SWF 文件提供了调用 getCamera 的“重试”按钮,则用户不必重新启动该 SWF 文件,Flash Player 即可找到摄像头。

参数:
name 指定要获取哪一个摄像头,这由 names 属性返回的数组确定。对于大多数应用程序,可省略此参数来获取默认摄像头。要为此参数指定值,请使用 Camera.names 数组内从零开始的索引位置的字符串表示形式。例如,要在数组中指定第三个摄像头,请使用 Camera.getCamera("2")
返回:
如果未指定 name 参数,则此方法返回对默认摄像头的引用;或者,如果默认摄像头正由另一个应用程序使用,则此方法返回对第一个可用摄像头的引用。(如果安装了多个摄像头,则用户可以在 Flash Player 的“摄像头设置”面板中指定默认的摄像头。)如果没有可用摄像头或没有安装摄像头,则该方法返回 null
另请参阅:
index
muted
names
setMode()
status
Video.attachCamera()
语言版本:
3.0
Player 版本:
Flash 9, AIR 1.0

flash.media.Microphone.getMicrophone(index:int=-1):Microphone
返回对用于捕获音频的 Microphone 对象的引用。要开始捕获音频,您必须将 Microphone 对象附加到 NetStream 对象(请参阅 NetStream.attachAudio())。

Microphone.get() 的多次调用会引用同一个麦克风。因此,如果代码包含 mic1 = Microphone.get()mic2 = Microphone.get() 行,则 mic1mic2 将引用同一个(默认)麦克风。

如果要获取默认的麦克风,则需要使用 -1 调用 getMicrophone()。如果调用此方法时不使用任何参数,则会返回列表中的第一个麦克风。

可以使用 index 属性来获取当前 Microphone 对象的索引值。然后,可以将该值传递给 Microphone 类的其它方法。

通常,不应传递 index 的值。只需使用 Microphone.getMicrophone() 方法即可返回对默认麦克风的引用。通过使用“麦克风设置”面板,用户可以指定应用程序应使用的默认麦克风。如果传递 index 的值,则可能会引用非用户选择的其它麦克风。在极少数情况下(例如,应用程序同时从两个麦克风捕获音频),您可能会使用 index

当 SWF 文件尝试访问 Microphone.getMicrophone() 返回的对象时(例如,在调用 NetStream.attachAudio() 时),Flash Player 将显示“隐私”对话框,用户可从中选择是允许还是拒绝访问麦克风。(确保舞台大小至少为 215 x 138 个像素;这是 Flash Player 显示该对话框所需的最小大小。)

当用户对此对话框做出响应时,将分派 status 事件以指示用户的响应。还可以检查 Microphone.muted 属性以确定用户是允许还是拒绝访问麦克风。

如果 Microphone.getMicrophone() 返回 null,则表明麦克风正由其它应用程序使用,或者系统上没有安装任何麦克风。要确定是否安装了任何麦克风,请使用 Microphones.names.length。要显示 Flash Player 的“麦克风设置”面板(用户可从中选择 Microphone.getMicrophone 所引用的麦克风),请使用 Security.showSettings()

参数:
index 麦克风的索引值。
返回:
对用于捕获音频的 Microphone 对象的引用。
另请参阅:
Microphone.status
flash.net.NetStream.attachAudio()
flash.system.Security.showSettings()

语言版本:
3.0
Player 版本:
Flash 9

flash.system.Capabilities.avHardwareDisable():Boolean
[只读] 指定对用户的摄像头和麦克风的访问是已经通过管理方式禁止 ( true) 还是允许 ( false)。服务器字符串为 AVD

对于 Adobe AIR™ 中的内容,此属性仅适用于应用程序安全沙箱以外的安全沙箱中的内容。应用程序安全沙箱中的内容始终可以访问用户的摄像头和麦克风。

另请参阅:
flash.media.Camera.getCamera()
flash.media.Microphone.getMicrophone()
Security.showSettings()

语言版本:
3.0
Player 版本:
Flash 9, AIR 1.0

flash.system.System.setClipboard(string:String):void
用指定的文本字符串替换剪贴板的内容。当因用户事件(例如,键盘或鼠标事件处理函数)而调用此方法时,此方法可以在任何安全上下文中使用。

此方法是为 Flash Player 9 中运行的 SWF 内容提供的。它只允许向剪贴板添加 String 内容。在 AIR 应用程序中,Flash Player 10 内容和应用程序安全沙箱中的内容可以调用 Clipboard.setData() 方法。

参数:
string 要放置在系统剪贴板上的纯文本字符串,用于替换系统剪贴板上的当前内容(如果有)。
另请参阅:
flash.desktop.Clipboard
语言版本:
3.0
Player 版本:
Flash 9



























 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值