通过ener类 , 监听传感器给出的信息来确定屏幕的方向 , 这个方法得到的方向比较准确 , 而且多少度角度都可以得到 , 而不是固定0、90、180、270 。及它不需要等待手机旋转了90度才会有反应 , 而是在手机旋转了任何角度的时候 , 都会回调告诉你当前手机的角度 , 当然 , 如果你只希望得到4个角度的变化事件 , 可以自己在该函数中做判断 。调用函数如下:
mOrientationListener = new OrientationEventListener(this,SensorManager.SENSOR_DELAY_NORMAL) {@Overridepublic void onOrientationChanged(int orientation) {Log.v("haha","Orientation changed to " + orientation);}};if (mOrientationListener.canDetectOrientation()) {Log.v(TAG, "Can detect orientation");mOrientationListener.enable();} else {Log.v(TAG, "Cannot detect orientation");mOrientationListener.disable();}
它的值分别对应的手机方向如下:
对于 , 默认的手机方向是:竖屏Home键在下面 , 这个是的0度方向 。
注意:它的角度递增规律是:“顺时针”方向旋转 , 每次递增90度 。
(3)、相机的方向
通过n来设置预览角度 , 各值对应手机方向如下:
对于 , 默认情况下 , 手机横屏 , HOME键在右边 , 这个方向是的0度方向 。
注意:它的角度递增规律是:“顺时针”方向旋转 , 每次递增90度 。
所以 , 对于不管是前置还是后置摄像头 , 对应屏幕上述的各个方向 , 设置预览角度就可以得到校正后的预览图像 。
接下来具体分析一下:
摄像头方向
屏幕方向 , 顺时针
, 逆时针
.
计算公式:
前:(. + 180-)%360
后:(. -+360 )%360
值 , 顺时针
前摄像头
0(home键下侧)
270
(270+180+0)%360
90
90(home键左侧)
文章插图
270
270
(270+180-270)%360
180
180(home键上侧)
180
270
(270+180-180)%360
270
270(home键右侧)
90
270
(270+180-90)%360
后摄像头
0(home键下侧)
90
(90-0+360)%360
90
90(home键左侧)
270
90
(90-270+360)%360
180
180(home键上侧)
180
90
(90-180+360)%360
270
270(home键右侧)
90
90
(90-90+360)%360
【android-camera方向总结】通过上述给的算法公式获得与上述要求的相机的方向正好对应 , 说明该公式正确 。可以使相机预览方向正确 。
- 初二上册物理知识点总结
- Android第二单元总结
- 界面设计的行业标准总结一
- Postman接口测试实践总结
- 如何判断声音的方向
- 八十 C语言之pthread_cond_t信号变化探究总结
- 使用TX2读取USB手柄/方向盘的输出控制
- 一 项目目录实践总结
- 一 SpringBoot框架技术总结
- 密码学技术总结