演员表
- 摄像头
- 方向传感器
定妆照
测距效果
人物简介
- 摄像头
摄像头主要提供预览的画面,让中间的准心对准所测物体的底部边缘。 -
方向传感器
传感器坐标系
坐标系统是相对于默认方向的手机屏幕定义的。当设备的屏幕方向改变时,轴不交换。
X轴是水平的并指向右侧,Y轴是垂直的并指向上方,Z轴指向屏幕正面的外侧。在这个系统中,屏幕后面的坐标具有负Z值。
注意:此坐标系与原始位于左上角的Android 2D API中使用的坐标系不同。
剧情梗概
原理图
首先创建一个传感器管理器,注册一个传感器监听器。
管理器用来管理传感器以及创建各种各样的传感器。
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
gyroSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
//为传感器注册监听器
sensorManager.registerListener(this, gyroSensor,SensorManager.SENSOR_DELAY_UI);
监听器用来监视传感器的变化并且进行相应的操作。
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
angle = Math.abs(sensorEvent.values[1]);
mTvAngle.setText("镜头角度:" + String.format(Locale.CHINA, "%.2f", angle));
angle = (float) (progress * Math.tan(angle * Math.PI / 180));
mTvDistance.setText("与所测物体相距:" + String.format(Locale.CHINA, "%.2f", angle) + " cm");
}
在监听器里获取∠a的值,在屏幕上设定此时摄像头的高度h,使用正切函数就可以求得x啦。
花絮
当我们平躺着,手机摄像头处于脚尖处,摄像头对准头顶,就可以测出身高啦~~~一般人我不告诉Ta
剧本
项目地址:猛戳→测身高