2015-12-16 16 views
8

シリリモートの現在のオリエンテーションを確認する方法や、シリリモートオリエンテーションの変更を登録する方法を探していますが、まだ何も見つかりませんでした。生重力データの解釈に頼らずにこれを行うことは可能ですか?シリのリモートオリエンテーションを取得する(または変更の通知を受け取りますか?)

私はを持っています。は、 "microGamepad"の "allowsRotation"で自動オリエンテーションの変更を無効にする方法を発見しました。これはかなりクールです!

+0

昨日私はApple TVチーム@ Appleが主催したApple TVの技術トークであった。彼らはリモコンの方向を検出することに言及しましたが、コードが表示されているかどうかはわかりません。 –

+0

オースティン、私はオースティンのテクノロジートークに参加していました。彼らはオリエンテーションの検出についても何か言っていました。私は、「肖像画、風景、風景が反転しました」と言ったスライドを覚えています。しかし、私はそれをオンラインで参照することはできません。 –

+0

私が見つけることができる最も近いものは:[Apple TV Remoteをゲームコントローラとして使用する](https://developer.apple.com/library/tvos/documentation/General/Conceptual/AppleTV_PG/WorkingwithGameControllers.html)です。 *リモコンは縦向きまたは横向きのどちらでも使用できます。アプリケーションを作成するときに、ユーザーがリモート方向を変更したときにプロファイルオブジェクトが入力データを自動的に反転するかどうかを決定します。 –

答えて

1

私はAPIを見ていませんでしたが、言及したように重力データをポーリングすることができます。最後の方向を検出し、変更のコールバックを希望する場合は現在の方向と比較するなど、必要に応じてこれを変更できます。

//************************************************************** 
    // 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 
} 
関連する問題