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

剧本

项目地址:猛戳→测身高

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • OpenGL本身没有摄像机的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,这样感觉就像...
    IceMJ阅读 2,575评论 0 7
  • 写在前面 本文原标题《以iPhone 6 为例介绍手机内置传感器 》,是我的《传感器》课程的课后大作业。说来之所以...
    继续海阔天空阅读 29,809评论 2 17
  • 作者ivm 参考文章:http://blog.csdn.net/wenzhi20102321/article/de...
    lovesosoi阅读 1,424评论 0 8
  • android传感器的种类 Sensor framework 使用Android的sensor framework...
    MrMagicWang阅读 1,821评论 0 4
  • 婚纱对于女人来说,有多重要只有她自己心里才清楚,毕竟一辈子只有一次。 但是最近,有对婆媳因为婚纱的争论上了热搜,大...
    HRPARK阅读 233评论 0 1