关于iPad和iPhone使用投影仪或外接显示器

MBP或者Air等苹果本要使用外接显示器或投影仪的话需要专门的设备:Mini DisplayPort 至 VGA 转接器;同样如果想在iPad或iPhone上使用投影仪或者外接显示器也需要专门的设备:Apple VGA Adapter;如果您没有Apple VGA,下面的东东看看就可以了,因为这个实验硬件是必需的。(好吧,当然了,如果你有开发环境的话,可以用iOS Simulator模拟外接显示:菜单->Hardware->TV Out然后选择一个分辨率)
OK,准备好了硬件说说软件,对于iOS系统来说4.3及以后的系统直接支持通过Apple VGA将视频或图像输出外接设备,之前的系统似乎必需使用Display Out等越狱以后的软件。即使对于支持的iOS系统也是有区分的:iPad三代产品都支持直接通过Apple VGA输出图像,效果就是类似于屏幕镜像,你在iPad上的所有应用等直接输出;iPhone及iTouch之类的就要区分对待了,因为屏幕较小,直接输出不是件很酷的事儿,但是提供了专门的接口,开发者可以实现在应用内将图像或视频输出到外接设备。这一块就是今天要讨论的问题了。
其实代码很简单:

  if ([UIScreen screens].count == 2) {
    UIScreen *_extStreen = [[UIScreen screens] objectAtIndex:1]; //得到外接显示器
    UIWindow *_extWindow = [[UIWindow alloc] initWithFrame:_extStreen.bounds]; //根据外接显示器的大小创建一个Window
    _extWindow.clipsToBounds = YES;
    _extWindow.hidden = NO; //必需设置NO,因为默认的话是YES,也就是不显示
    _extWindow.screen = _extStreen; //指定新建人的window的显示屏是外接显示器
    [_extWindow makeKeyAndVisible]; //让window可见
    //这样应该就用上外接显示器了,可以往windows上addSubview了。
    //为了区分显示可以设置外接显示器的window的背景
    _extWindow.backgroundColor = [UIColor redColor];
  }

优米视频的播放器为例,加这段代码前播放的视频只能在手机屏上显示:

加上以后,可以把视频设置成只在外接显示器上显示:

当然为了更好的处理外接设备的连接与断开信息可以监听下面三个消息以应付不同的情况

UIScreenDidConnectNotification //设备连接信息
UIScreenDidDisconnectNotification //设备断开信息
UIScreenModeDidChangeNotification //设备改变信息,这里主要指分辨率

关于这个特性的延伸讨论:
为什么要支持这个特性:
1.获得更好的用户体验。我们知道通过大显示屏看视频是件很酷的事儿。(我的24寸的显示器基本上就常干这活)
2.省电。当在外接显示器输出视频的时候,iPad的主屏幕可以亮度调到最低(或者在实现这个特性的时候主屏弄成黑屏),以达到节省电量的作用(屏幕是移动设备最费电的常识应该有吧?)
关于这个特性的一些实际应用:
我们知道现在国内的大多数的视频应用都没有支持这个特性。(至少我常用的几个应用不支持。个人觉得国内的开发者浮躁是一方面的原因,更重要的是大环境的浮躁)那么这种情况下怎么使用这个特性呢。虽然市面上的一些应用播放器都很酷。但是极少有是自已重新写的播放器(也就是都是改造的系统的播放器),这样一来几乎就天然支持了这一特性。我们可以用外接显示器观看视频的时候直接关闭iPad的主屏幕,超级省电的哟~

    分享到:

About rainbird

IOS攻城狮
This entry was posted in 默认分类 and tagged , , , , , , . Bookmark the permalink.

发表评论