- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
获取最有可能是投影仪或 AirPlay 显示器的 NSScreen
实例的最佳方式是什么? (甚至电视输出?)我正在编写一个演示软件,需要知道哪个屏幕最有可能代表“演示”屏幕。
我想到了一些选择:
A.如果有的话,使用第二个实例。当然,如果连接的屏幕超过两个,这显然不会产生好的结果。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
projectorScreen = screens[1];
}
B.如果第一个屏幕不是主屏幕,请使用它。其背后的原因是,在镜像的情况下,第一个屏幕应该是像素深度最高的屏幕。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
if(screens[0] != projectorScreen) {
projectorScreen = screens[0];
}
}
C.使用非主屏幕的最低屏幕。原因只是选择任何非主屏幕的屏幕。
NSScreen* projectorScreen = [NSScreen mainScreen];
NSArray* screens = [NSScreen screens];
if(screens.count > 1) {
for(NSScreen* screen in screens) {
if(screen != projectorScreen) {
projectorScreen = screen;
break;
}
}
}
D.使用 NSScreen
的 deviceDescription
字典并找到现实世界坐标中最大的屏幕。即将 NSDeviceSize 的宽度和高度除以 NSDeviceResolution ,理论上这应该产生以平方英寸为单位的面积。然而,我并不完全相信操作系统知道每个屏幕的实际尺寸。
还有其他建议吗?
虽然没有任何 100% 正确的启发法,但话又说回来,在大多数情况下选择正确的屏幕就足够了。
最佳答案
看起来选项 (D) 是最好的,但有一些变化。显然,OS X 对显示器的实际尺寸有很好的了解,您可以 get it via CGDisplayScreenSize 。然后就可以非常简单地选择最大的一个并假设它是演示屏幕。
当然,这不能准确测量投影仪,但我的非正式测试表明,该函数为每个屏幕返回相当不错的每英寸像素值:
(以上均以常数25.4毫米每英寸换算)。
这是我使用的代码:
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <ApplicationServices/ApplicationServices.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSArray* screens = [NSScreen screens];
CGFloat __block biggestArea = 0;
NSScreen* __block presentationScreen;
NSUInteger __block presentationScreenIndex;
[screens enumerateObjectsUsingBlock:^(NSScreen* screen,NSUInteger idx,BOOL* stop){
NSDictionary *description = [screen deviceDescription];
NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue];
CGSize displayPhysicalSize = CGDisplayScreenSize(
[[description objectForKey:@"NSScreenNumber"] unsignedIntValue]);
NSLog(@"Screen %d Physical Size: %@ ppi is %0.2f",(int) idx, NSStringFromSize(displayPhysicalSize),
(displayPixelSize.width / displayPhysicalSize.width) * 25.4f);
// there being 25.4 mm in an inch
CGFloat screenArea = displayPhysicalSize.width * displayPhysicalSize.height;
if(screenArea > biggestArea) {
presentationScreen = screen;
biggestArea = screenArea;
presentationScreenIndex = idx;
}
}];
NSLog(@"Presentation screen: index: %d %@",(int) presentationScreenIndex,presentationScreen);
}
}
关于macos - NSScreen 获取投影仪/电视输出/AirPlay 屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474596/
我正在尝试向我的应用程序添加一个 AirPlay 按钮并使用了以下代码: MPVolumeView *volumeView = [ [MPVolumeView alloc] init] ; [volu
我已经设法显示显示可用 airplay 设备列表的 airplay 弹出窗口,当我从可用设备列表中选择一个设备时,我想关闭该弹出窗口。有办法吗? 最佳答案 似乎无法使用代码执行此操作,您必须通过点击弹
我正在使用媒体播放器,某些媒体无权通过 Airplay 播放,不要问为什么 :)。所以当我得到那个媒体时,我设置了 movieplayerController.allowsAirplay = NO;
我已经尝试解决这个问题 2 天了,但我放弃了。我正在尝试实现一个自定义的 airplay 按钮(我必须这样做,因为背景是白色的,按钮必须是黑色的)。我在 interfacebuilder 中添加了一个
根据 Apple 的说法,您应该能够通过 airplay 流式传输普通的 html5 视频 https://developer.apple.com/library/ios/releasenotes/G
我需要在我的 Macbook 上现场演示 Mobile Safari 浏览器应用程序(iOS 5、iPhone 4S),并且想知道执行此操作的最佳方法吗? 我认为可能的一种方法是使用 AirPlay
目标是在 AirPlay 运行时在电视中查看 vtt 格式的 html 字幕。 html代码: 问题是当启用 AirPlay 时,电视上的视频和音频播放,但
自上次 OSX 更新(优胜美地)以来,我的本地主机服务器充满了来自 airplay 的错误消息(但我没有使用它)。每次都是一样的: [31/Oct/2014 05:40:42] code 400, m
我目前正在通过 AudioQueues 播放音频。我想允许用户连接到 Airplay 设备。 如果我创建一个 MPVolumeView 并使用“showsRouteButton”来显示我可以成功连接的
有没有办法在浏览器中使用 JavaScript 将图像、视频和音频发送到 AirPlay 服务器? 最佳答案 这在 JavaScript 中是不可能实现的。但是,您可以使用 NPAPI 从浏览器运行它
我正在尝试实现与 Music.app 相同的 AirPlay 按钮。该按钮会显示一个弹出窗口,其中包含可用设备列表,用户可以选择这些设备来重新路由音频。 在搜索我的问题时,我发现了 MPVolumeV
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
有人可以向我解释什么是 Airplay SDK 以及何时使用它、如何在程序中使用等细节吗?我希望,它用于将视频从 iPhone 流式传输到电视? 谢谢。 最佳答案 AirPlay SDK实际上是一个i
我们正在构建一个 iOS 应用程序,用户可以在订阅模式下观看视频。 我们不希望用户将视频播放到任何其他设备。 视频正在 UIWebView 中播放。 我检查了各种在线资源: https://devel
我在使用 AirPlay 时遇到了一些问题。问题是,我正在使用 ATV3 进行开发,而我的电视机支持 1080p。但是当我开始屏幕镜像并接收到 UIScreen 的新实例时,边界和 applicati
我遇到了一个问题,即 iOS 8 上的 airplay 路径选项弹出窗口绘制得太短,以至于用户甚至无法判断除了 iPad 之外还有其他选项可用。在随附的屏幕截图中,实际上有两个可用的 airplay
我看过但找不到访问音频输出路由的方法,因此我可以检测音频是否通过 AirPlay 输出。 这是我在 iOS 5.0 文档中找到的内容 kAudioSessionOutputRoute_AirPlay
我的应用程序使用麦克风并输出音频,因此我将我的 Audio Session 设置为播放和录制类别,但这似乎禁用了 Airplay。如果我将类别设置为播放,Airplay 可以很好地处理我的输出(但显然
我正在使用 AVPlayerViewController 在流中播放视频。 当我在 Apple TV 的 AVPlayerViewController 上启动 Airplay 并将应用程序置于后台,或
任何人都知道如何将音频流式传输到多个 AirPlay 目的地?显然,这在过去的某个时候可以通过 Core Audio 实现,但在 10.9 和 10.10 上,这似乎不可能。 iTunes 做到了,那
我是一名优秀的程序员,十分优秀!