2011-11-26 5 views
2

Je joue avec AirPlay en utilisant un iPhone 4S et j'ai des problèmes. J'ai mis à jour mon Apple TV 2 au plus tard (4.4.3 je pense? Je l'oublie, c'est dans l'autre pièce et je suis trop fainéant pour vérifier) ​​et j'ai iOS 5.0 sur mon 4S pendant que j'utilise Xcode 4.2 Build 4D199 . J'ai écrit une application UIView simple qui tente de dessiner sur un deuxième écran lorsque disponible. Voici ce que j'ai dans mon viewDidLoad:Comment utiliser iOS 5+ AirPlay pour un deuxième écran

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.view addSubview:[[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]]; 
    NSLog(@"Registering for screen connect events..."); 
    // Do any additional setup after loading the view, typically from a nib. 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(screenDidConnect:) 
    name:UIScreenDidConnectNotification 
    object:nil]; 
    [[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(screenDidDisconnect:) 
    name:UIScreenDidDisconnectNotification 
    object:nil]; NSLog(@"There are %i connected screens.", ScreenCount); 
    if (ScreenCount > 1) { 
     self.secondWindow = [self myScreenInit:[[UIScreen screens] objectAtIndex:1]]; 
     [self.secondWindow addSubview:[self createFullscreenViewForText:@"Second window" withSize:CGSizeMake(640, 480)]]; 
    } 
} 

Ce code fonctionne dans le simulateur quand j'activer la sortie TV mais il se bloque toujours si j'activer la sortie TV tout en debug. Je dois relancer l'application après avoir activé la sortie TV dans le menu du matériel dans le simulateur. Lors de la relance, je vois le deuxième écran UILabel sur le deuxième écran. Sur l'iPhone 4S, je peux seulement faire ce travail si j'active AirPlay en utilisant le contrôle AirPlay dans la barre des tâches en cours d'exécution tout à fait à gauche. Vous remarquerez que j'ai ajouté un composant MPVolumeView à la vue au lancement que je tente d'utiliser pour me connecter à mon Apple TV en vain. Si j'utilise l'application MPVolumeView dans l'application, je peux me déconnecter de l'Apple TV mais quand je l'utilise à nouveau et que je sélectionne l'Apple TV pour me reconnecter, je ne reçois pas la notification UIScreenDidConnectNotification. Encore une fois le seul moment où je peux voir le 2ème écran est quand j'active le mirroring. Si je me connecte avec l'un ou l'autre des contrôles AirPlay, je ne compte que 1 écran et je n'obtiens jamais la notification. De plus, chaque fois que je permets que je vois cela dans la mise en miroir des journaux de la console:

Could not find mapped image ColorOnGrayShadow_AirPlay.png 

Cela semble être rompu et je voudrais savoir ce que les autres l'expérience a été dans ce domaine. Je vais continuer à jouer et mettre à jour ce post que j'apprends de nouvelles choses.

+0

Je vais avoir exactement le même problème avec le MPVolumeView ne donnant pas un autre écran. J'avais un problème pour obtenir du contenu sur le deuxième écran, mais il s'est avéré que c'était parce que je ne conservais pas l'objet fenêtre. Encore, serait gentil de ne pas avoir à utiliser le mirroring pour que cela fonctionne. – Jeff

+0

Hey Cliff - une idée de comment contrôler un écran d'un autre? Je n'arrive pas à comprendre comment faire cela. Merci! – TommyG

+0

Si vous voulez dire contrôler un deuxième écran via AirPlay, alors il s'agit d'utiliser les API d'AirPlay pour accéder au 2ème écran. Si vous avez une référence, vous pouvez dessiner ou placer tout ce que vous voulez. – Cliff

Répondre

5

Le menu Route de MPVolumeView ne peut contrôler qu'un flux audio allant vers AppleTV. Voici un exemple concret de ce que vous essayez de faire: https://github.com/quellish/AirplayDemo/

Le message du journal « ColorOnGrayShadow_AirPlay.png » est normal pour iOS 5. En utilisant un Airplay connecté AppleTV comme un écran externe nécessite malheureusement la mise en miroir, et vous pouvez » t activer cela depuis l'intérieur de votre application. L'utilisateur doit suivre les instructions suivantes:

http://support.apple.com/kb/TS4085

+0

Merci quellish. J'ai appris la même chose par essais et erreurs. En effet, il n'est pas clair que l'utilisateur doit manuellement activer le mirroring pour que tout fonctionne. Espérons qu'une future mise à jour répondra à l'imprécision. – Cliff

+0

Si vous entrez une courte requête d'amélioration sur bugreporter.apple.com dans la documentation, ils pourront prioriser la mise à jour de la documentation pour clarifier le fait que la mise en miroir est requise. Le plus de demandes déposées sur cette question, mieux c'est. – quellish

+0

@quellish Merci d'avoir fourni AirplayDemo. – tobinjim

Questions connexes