android摄像头加传感器——测距

演员表

  • 摄像头
  • 方向传感器

定妆照

测距效果

人物简介

  1. 摄像头
    摄像头主要提供预览的画面,让中间的准心对准所测物体的底部边缘。
  2. 方向传感器


    传感器坐标系

    坐标系统是相对于默认方向的手机屏幕定义的。当设备的屏幕方向改变时,轴不交换。
    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

剧本

项目地址:猛戳→测身高

你可能感兴趣的:(android摄像头加传感器——测距)