检测电话方向

时间:2019-10-25 10:01:18

标签: android kotlin sensor

我想检测手机的方向以从相机旋转框架,然后我的姿势估计可以正确推断出旋转的图像。

例如:有人站在我的手机前,我将手机水平放置,然后在推断之前要将这张图像旋转为垂直。因为该模型可以垂直捕获人员。

我已经尝试过了: var orientation = resources.configuration.orientation

但是,这仅在屏幕的自动旋转功能打开且我不想要此功能时有效。 我不旋转我的应用程序。

1 个答案:

答案 0 :(得分:1)

         val orientationEventListener = object : OrientationEventListener(activity) {
            override fun onOrientationChanged(orientation: Int) {
                val defaultPortrait = 0
                val upsideDownPortrait = 180
                val rightLandscape = 90
            val leftLandscape = 270
                when {
                    isWithinOrientationRange(orientation, defaultPortrait) -> {} 
                    isWithinOrientationRange(orientation, leftLandscape) -> {} 
                    isWithinOrientationRange(orientation, upsideDownPortrait) -> {} 
                    isWithinOrientationRange(orientation, rightLandscape) -> {} 
                }
            }

           private fun isWithinOrientationRange(
               currentOrientation: Int, targetOrientation: Int, epsilon: Int = 10
           ): Boolean {
               return currentOrientation > targetOrientation - epsilon
                    && currentOrientation < targetOrientation + epsilon
           }
        }
        orientationEventListener.enable()