2016-06-27 4 views
1

Я много оглядывался по этому вопросу, но все, что я нашел, довольно устарели.Можно ли программно включить зеркалирование воспроизведения?

example

this article is from 2012 and says that it's not possible

В основном я хочу, чтобы иметь возможность начать зеркальное отображение моего Iphone через ротацию на другой экран внутри моего приложения, и мне интересно, если что теперь это возможно. В статьях, которые я нашел, все говорят, что это невозможно, или, если это будет сделано, приложение не будет принято для магазина приложений.

+0

На данный момент это невозможно. Для этого нет открытых API. – amagain

ответ

0

Это все еще невозможно. Нет публичных API для включения AirPlay (и частные не будут отправлены). Это функция системного уровня, которую нельзя манипулировать из приложения.

Пользователь должен инициировать AirPlay, но вы можете просто отобразить сообщение, предлагающее пользователю включить AirPlay для улучшения приложения.

3

Возможно реализовать собственный вид подборщика AirPlay с iOS 11. Пожалуйста, проверьте AVRoutePickerView. Это позволит вам контролировать соединения с различными экранами AppleTV/external в приложении. Смотрите пример:

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    AVRoutePickerView *routePickerView = [[AVRoutePickerView alloc] initWithFrame:CGRectMake(0.0f, 30.0f, 30.0f, 30.0f)]; 
    routePickerView.backgroundColor = [UIColor lightGrayColor]; 
    [self.view addSubview:routePickerView]; 

    AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:@"https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8"]]; 
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset]; 
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem]; 
    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
    [playerLayer setFrame:CGRectMake(0.0f, 40.0f, self.view.frame.size.width, self.view.frame.size.height - 40.0f)]; 
    [self.view.layer addSublayer:playerLayer]; 
    [player seekToTime:kCMTimeZero]; 
    [player play]; 
} 

@end 

В результате при нажатии на AVRoutePickerView вы получите что-то вроде этого: enter image description here

При нажатии на доступном внешнем экране вы будете иметь возможность воспроизведения контента на нем.

+1

Я построил небольшой образец, используя AVRoutePickerView, он кажется эквивалентным MPVolumeView, он, похоже, направляет существующий сеанс AV на другое устройство, но он, похоже, не начинает зеркалирование для не-медиаконтента. – nobre

+0

Могу ли я запускать выбор маршрута программно с помощью AVRoutePickerView? –