屏幕
- 屏幕
- 概要
- Screen.Init()
- Screen.screens
- Screen.chooseDesktopMedia (sources, callback)
- 事件: displayBoundsChanged(screen)
- 事件: displayAdded (screen)
- 事件: displayRemoved (screen)
- Screen.DesktopCaptureMonitor
- 概要
- Screen.DesktopCaptureMonitor.started
- Screen.DesktopCaptureMonitor.start(should_include_screens, should_include_windows)
- Screen.DesktopCaptureMonitor.stop()
- Screen.DesktopCaptureMonitor.registerStream(id)
- 事件: added (id, name, order, type, primary)
- 事件: removed (order)
- 事件: orderchanged (id, new_order, old_order)
- 事件: namechanged (id, name)
- 事件: thumbnailchanged (id, thumbnail)
Screen
是 EventEmitter 对象的一个实例,您可以使用 Screen.on(...)
来响应原生屏幕的事件。
Screen
是一个单例对象,需要通过调用 nw.Screen.Init()
初始化一次。
概要
//init must be called once during startup, before any function to nw.Screen can be called nw.Screen.Init(); var screenCB = { onDisplayBoundsChanged: function(screen) { console.log('displayBoundsChanged', screen); }, onDisplayAdded: function(screen) { console.log('displayAdded', screen); }, onDisplayRemoved: function(screen) { console.log('displayRemoved', screen) } }; // listen to screen events nw.Screen.on('displayBoundsChanged', screenCB.onDisplayBoundsChanged); nw.Screen.on('displayAdded', screenCB.onDisplayAdded); nw.Screen.on('displayRemoved', screenCB.onDisplayRemoved);
Screen.Init()
初始化 Screen 单例对象,您只需要调用一次。
Screen.screens
获取屏幕数组(连接到计算机的屏幕数量)。
屏幕具有以下结构
screen { // unique id for a screen id: int, // physical screen resolution, can be negative, not necessarily start from 0,depending on screen arrangement bounds: { x: int, y: int, width: int, height: int }, // useable area within the screen bound work_area: { x: int, y: int, width: int, height: int }, scaleFactor: float, isBuiltIn: bool, rotation: int, touchSupport: int }
Screen.chooseDesktopMedia (sources, callback)
sources
{String[]}
源类型数组。此 API 支持两种类型:"screen"
和"window"
。callback
{Function}
带有选定 streamId 的回调函数。如果执行失败或现有会话处于活动状态,则 streamId 将为false
。
注意
通过选择进行屏幕共享;目前仅在 Windows 和 OSX 以及某些 Linux 发行版中有效。
示例
nw.Screen.Init(); // you only need to call this once nw.Screen.chooseDesktopMedia(["window","screen"], function(streamId) { var vid_constraint = { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: streamId, maxWidth: 1920, maxHeight: 1080 }, optional: [] }; navigator.webkitGetUserMedia({audio: false, video: vid_constraint}, success_func, fallback_func); } );
事件: displayBoundsChanged(screen)
当屏幕分辨率、排列发生变化时发出,回调将使用 1 个参数 screen
调用。有关格式,请参见 Screen.screens。
事件: displayAdded (screen)
当添加新屏幕时发出,回调函数将使用 1 个参数 screen
调用。有关格式,请参阅 Screen.screens。
事件: displayRemoved (screen)
当删除现有屏幕时发出,回调函数将使用 1 个参数 screen
调用。有关格式,请参阅 Screen.screens。
Screen.DesktopCaptureMonitor
此 API 的行为类似于 Screen.chooseDesktopMedia
函数。但它没有 GUI。您可以使用此 API 监控桌面上的屏幕和窗口的变化,并实现您自己的 UI。
Screen.DesktopCaptureMonitor
是 EventEmitter
的一个实例。您可以使用 Screen.DesktopCaptureMonitor.on()
监听事件。
概要
var dcm = nw.Screen.DesktopCaptureMonitor; nw.Screen.Init(); dcm.on("added", function (id, name, order, type) { //select first stream and shutdown var constraints = { audio: { mandatory: { chromeMediaSource: "system", chromeMediaSourceId: dcm.registerStream(id) } }, video: { mandatory: { chromeMediaSource: 'desktop', chromeMediaSourceId: dcm.registerStream(id) } } }; // TODO: call getUserMedia with contraints dcm.stop(); }); dcm.on("removed", function (id) { }); dcm.on("orderchanged", function (id, new_order, old_order) { }); dcm.on("namechanged", function (id, name) { }); dcm.on("thumbnailchanged", function (id, thumbnail) { }); dcm.start(true, true);
Screen.DesktopCaptureMonitor.started
DesktopCaptureMonitor 是否已启动的布尔值。
Screen.DesktopCaptureMonitor.start(should_include_screens, should_include_windows)
should_include_screens
{Boolean}
是否应包含屏幕should_include_windows
{Boolean}
是否应包含窗口
DesktopCaptureMonitor
将开始监控系统并触发事件。如果 DesktopCaptureMonitor
正在运行,屏幕可能会闪烁。
Screen.DesktopCaptureMonitor.stop()
DesktopCaptureMonitor
将停止监控系统。在选择流后应停止 DesktopCaptureMonitor
。
Screen.DesktopCaptureMonitor.registerStream(id)
注册并返回一个有效的流 ID,该 ID 传递到 getUserMedia
约束中的 chromeMediaSourceId
。有关用法,请参阅 概要。
事件: added (id, name, order, type, primary)
行为变更
此功能在 0.13.0 中已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
id
{String}
是媒体 ID。使用registerStream(id)
获取与getUserMedia()
一起使用的有效流 ID。请参阅 registerStreamname
{String}
是窗口或屏幕的标题order
{Integer}
是窗口的 Z 轴顺序,如果选择了屏幕,它们将首先出现type
{String}
流的类型:“screen”、“window”、“other” 或 “unknown”primary
{Boolean}
仅限 Windows 操作系统 如果源是主监视器,则此值为true
当添加新源时发出。
事件: removed (order)
order
{Integer}
是不再可捕获的媒体源的顺序
当删除源时发出。
事件: orderchanged (id, new_order, old_order)
行为变更
此功能在 0.13.0 中已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
id
{String}
是已更改 Z 轴顺序的屏幕或窗口的媒体 IDnew_order
{Integer}
是新的 Z 轴顺序old_order
{Integer}
是旧的 Z 轴顺序
当源的 Z 轴顺序发生变化时发出(当其他窗口获得焦点时,窗口的 Z 轴顺序可能会发生变化)。
事件: namechanged (id, name)
行为变更
此功能在 0.13.0 中已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
id
{String}
是已更改名称的屏幕或窗口的媒体 IDname
{String}
是屏幕或窗口的新名称
当源名称更改时发出。这可能发生在窗口更改标题时。
事件: thumbnailchanged (id, thumbnail)
行为变更
此功能在 0.13.0 中已更改。请参阅 从 0.12 迁移到 0.13 的迁移说明。
id
{String}
是具有更新缩略图的屏幕或窗口的媒体 IDthumbnail
{String}
是缩略图的 base64 编码 png
当源的缩略图更改时发出。