获取Siri Remote方向(或获取更改通知?)

时间:2015-12-16 18:14:46

标签: tvos orientation-changes apple-tv siri-remote

我一直在寻找一种方法来检查Siri Remote的当前方向或注册Siri Remote方向更改,但我还没有找到任何东西。是否可以这样做(不需要解释原始重力数据)?

我已经 了解如何在“microGamepad”上使用“allowsRotation”禁用自动方向更改。这很酷!

1 个答案:

答案 0 :(得分: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
}