Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何判断iPhone是否为;“面朝下”;或;“面朝上?”;?_Ios_Iphone_Xamarin - Fatal编程技术网

Ios 如何判断iPhone是否为;“面朝下”;或;“面朝上?”;?

Ios 如何判断iPhone是否为;“面朝下”;或;“面朝上?”;?,ios,iphone,xamarin,Ios,Iphone,Xamarin,我需要检测iPhone所面对的方向,以便在掉落时可以从无障碍摄像头(正面或背面)进行记录 这将在紧急情况下使用,手机被放下,或放置在活动摄像头无法记录任何有价值的东西的位置 我可以使用什么API或技术来确定这一点?检查类的ProximityState属性。这将告诉您屏幕是否靠近某个对象(用户的脸,或平放在地面上) 对于较新的设备,您也可以使用。Z轴上的正值应与手机正面朝下的屏幕相对应。使用核心运动加速计。它报告重力方向,告诉你设备朝向哪个方向。我写了一个简单的函数来开始跟踪方向的变化,这样你就可

我需要检测iPhone所面对的方向,以便在掉落时可以从无障碍摄像头(正面或背面)进行记录

这将在紧急情况下使用,手机被放下,或放置在活动摄像头无法记录任何有价值的东西的位置


我可以使用什么API或技术来确定这一点?

检查类的ProximityState属性。这将告诉您屏幕是否靠近某个对象(用户的脸,或平放在地面上)


对于较新的设备,您也可以使用。Z轴上的正值应与手机正面朝下的屏幕相对应。

使用核心运动加速计。它报告重力方向,告诉你设备朝向哪个方向。

我写了一个简单的函数来开始跟踪方向的变化,这样你就可以知道它是朝下还是朝上(或者你想要的任何方向):


用Swift 4编写,但该API自iOS 2.0+以来就可用。

只有在用户解锁屏幕纵向方向时,此功能才有效。对于Swift4,使用UIDevice.OrientationIDChangeNotification而不是NSNotification.Name.UIDeviceOrientationIDChange作为通知名称。
func trackOrientationChanges() {
    UIDevice.current.beginGeneratingDeviceOrientationNotifications()
    NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification, object: nil, queue: nil, using:  
    { notificiation in
        if UIDevice.current.orientation == .faceDown {
            print("Device is face down")
        } else {
            print("Device is not face down")
        }
    })
}