Блок AirPlay Mirroring на iOS 5 - PullRequest
       40

Блок AirPlay Mirroring на iOS 5

7 голосов
/ 08 декабря 2011

На iOS 5 с iPad 2 или iPhone 4S пользователи могут включить зеркалирование экрана с помощью Apple TV и AirPlay. Как я могу предотвратить отражение моего приложения таким образом? Есть ли способ обнаружить, что происходит зеркальное отображение, чтобы я мог предотвратить зеркальное отображение моего контента?

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

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Это действительно очень плохая идея, и я ненавижу ее, потому что вы запрещаете своим пользователям. При этом зеркальное отображение AirPlay работает так же, как и подключение адаптера VGA / HDMI, когда вы подключаете адаптер, у вас есть возможность отображать все, что вы хотите, на «втором мониторе». Если вы хотите «заблокировать» зеркальное отображение, вы можете установить окно внешнего дисплея в пустой / сплошной черный вид.

Большинство приложений iOS создают и используют только одно окно в течение своей жизни. Это окно охватывает весь основной экран устройства и загружается из основного файла пера приложения (или создается программно) на ранних этапах жизни приложения. Однако, если приложение поддерживает использование внешнего дисплея для вывода видео, оно может создать дополнительное окно для отображения контента на этом внешнем дисплее. Все остальные окна обычно создаются системой и обычно создаются в ответ на определенные события, такие как входящий телефонный звонок.

Ознакомьтесь с Руководством по программированию для iOS , в частности, с разделом Windows и Отображение содержимого на внешнем дисплее

2 голосов
/ 03 мая 2015

Просто чтобы добавить код для выполнения этой довольно простой работы.

if ([[UIScreen screens] count] > 1)
    {
        UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];
        CGRect screenBounds = secondScreen.bounds;
        UIWindow *secondWindow = [[UIWindow alloc]initWithFrame:screenBounds];
        secondWindow.screen = secondScreen;
        UIView *anyView= [[UIView alloc]initWithFrame:screenBounds];
        anyView.backgroundColor= [UIColor blackColor];
        [secondWindow addSubview:anyView];
    }
...