2015-12-16 17 views
8

Ich habe nach einer Möglichkeit gesucht, die aktuelle Ausrichtung der Siri Remote zu überprüfen oder für Siri Remote-Ausrichtung Änderungen zu registrieren, aber ich habe noch nichts gefunden. Ist es möglich, dies zu tun (ohne auf die Rohdaten zurückgreifen zu müssen)?Erhalten Sie Siri Remote-Ausrichtung (oder erhalten Benachrichtigungen über Änderungen?)

Ich habe haben herausgefunden, wie automatische Ausrichtung Änderungen mit "allowsRotation" auf "microGamepad" deaktivieren. Was ist ziemlich cool!

+0

Ich war gerade bei einer Apple TV Tech Talk gestern, die von der Apple TV-Team @ Apple gehostet wurde. Sie haben erwähnt, die Ausrichtung der Fernbedienung zu erkennen, obwohl ich mich nicht erinnere, ob sie irgendeinen Code zeigten. –

+0

Oh Mann, ich war auf dem Tech Talk in Austin. Ich dachte, sie sagten etwas über das Erkennen der Orientierung. Ich erinnere mich an eine Folie, die etwas über "Porträt, Landschaft und Landschaft" sagte. Aber ich kann online keine Verweise darauf finden. –

+0

Das nächste, was ich finden kann, ist: [Verwenden der Apple TV Remote als Game Controller] (https://developer.apple.com/library/tvos/documentation/General/Conceptual/AppleTV_PG/WorkingwithGameControllers.html). * Die Fernbedienung kann entweder im Hoch- oder Querformat verwendet werden. Wenn Sie Ihre App erstellen, entscheiden Sie, ob das Profilobjekt die Eingabedaten automatisch umkehrt, wenn der Benutzer die Remote-Ausrichtung ändert. * –

Antwort

1

Ich habe auch keine API gesehen, aber wie Sie bereits erwähnt haben, können Sie nach den Gravitationsdaten suchen, und ich wollte diesen Code nur hier posten, falls einige ihn für nützlich halten. Sie können dies nach Ihrem eigenen Bedarf ändern, z. B. das Erkennen der letzten Ausrichtung und das Vergleichen mit der aktuellen Ausrichtung, wenn Sie einen Rückruf der Änderung wünschen.

//************************************************************** 
    // Update loop portion to UIViewController 
    //************************************************************** 
    @property (strong) CADisplayLink *updateLoopTimer; 
    self.updateLoopTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateRefreshRate:)]; 
    [self.updateLoopTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
    -(void)updateRefreshRate:(CADisplayLink *)displayLink 
    { 
     CFTimeInterval deltaTime = displayLink.duration * displayLink.frameInterval; 
     [self update:(float)deltaTime]; 
    } 

//****************************************************** 
// Update loop 
//****************************************************** 
-(void)update:(float)dt 
{ 
#ifdef TV 
    //*************************************** 
    // Detect button presses 
    //*************************************** 
    //self.gameControler = [[GCController controllers] firstObject]; 
    if(self.gameController != nil) 
    { 
     GCMicroGamepad* microPad = self.gameController.microGamepad; 
     if (microPad != nil) 
     { 
      GCMotion *motion = self.gameController.motion; 
      GCControllerDirectionPad *dpad = microPad.dpad; 

      if(motion != nil) 
      { 
       GCAcceleration accelVector = motion.gravity; 
       if(fabs(accelVector.x) > fabs(accelVector.y)) 
       { 
        NSLog(@"Sideways"); 
       } 
       else 
       { 
        NSLog(@"Upright"); 
       } 

      } 
     } 
    } 
#endif 
}