当前位置:

首页 > 系统应用 > 10.10 传感器专题(1)——相关介绍

10.10 传感器专题(1)——相关介绍

1.传感器相关介绍: 说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器; 传感器的定义:一种物理设备或者生物器官,能够探测、感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官! 传感器的种类:传感器其实有多种划分方式,可以从

本文目录

    1.传感器相关介绍:

    说到传感器,相信大家都不会陌生吧,比如微信的摇一摇就用到了加速度传感器;

    传感器的定义:一种物理设备或者生物器官,能够探测、感受外界的信号,物理条件(如光,热, 适度)或化学组成(如烟雾),并将探知的信息传递给其他的设备或者器官!

    传感器的种类:传感器其实有多种划分方式,可以从不同维度来看,比如转换原理(也就是传感器工作的基本物理或化学效应)、用途、输出信号,以及制作材料和工艺等。通常情况下,更常见的分法还是按工作原理来区分,主要分为物理传感器和化学传感器两大类。手机里配备的,基本上都是物理传感器。那手机上常见的传感器,主要就是下面这些:

    • 方向传感器(Orientation sensor)
    • 加速感应器(Accelerometer sensor)
    • 陀螺仪传感器(Gyroscope sensor)
    • 磁场传感器(Magnetic field sensor)
    • 距离传感器(Proximity sensor)
    • 光线传感器(Light sensor)
    • 气压传感器(Pressure sensor)
    • 温度传感器(Temperature sensor)
    • 重力感应器(Gra vity sensor,Android 2.3引入)
    • 线性加速感应器(Linear acceleration sensor ,Android 2.3引入)
    • 旋转矢量传感器(Rotation vector sensor,Android 2.3)
    • 相对湿度传感器(Relative humidity sensor,Android 4.0)
    • 近场通信(NFC)传感器(Android 2.3引入),NFC和其他不一样,具有读写功能。

    当然除了这些以外还有其他比如心率传感器,记步传感器,指纹传感器等, 关于Android设备所支持的传感器类型可见官方文档:Sensor Summary部分的内容~

    2.如何查看自己手机所支持的传感器有哪些?

    上面说的这么多种肯定不是所有手机都具备的,每台手机上搭载的传感器类型 以及数目都可能是不一样的,比如我手头上的Nexus 5支持的传感器类型有: 重力,光线,距离,气压和陀螺仪!而令意外moto x 二代则有重力,光线, 距离和红外传感器!关于自己手机支持的传感器类型,你可以到相关的评测 网站比如:中关村手机在线,太平洋等,搜索到自己的机型查看相关参数! 当然,我们也可以自己写代码来看看自己手机支持的传感器类型~

    代码示例:

    运行效果图:

    代码实现:

    activity_main.xml:

    
        
            
        
    

    MainActivity.ja va:

    public class MainActivity extends AppCompatActivity {
    private TextView txt_show;
        private SensorManager sm;
    @Override
        protected void onCreate(Bundle sa vedInstanceState) {
            super.onCreate(sa vedInstanceState);
            setContentView(R.layout.activity_main);
            sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
            txt_show = (TextView) findViewById(R.id.txt_show);
    List allSensors = sm.getSensorList(Sensor.TYPE_ALL);
            StringBuilder sb = new StringBuilder();
    sb.append("此手机有" + allSensors.size() + "个传感器,分别有:nn");
            for(Sensor s:allSensors){
                switch (s.getType()){
                    case Sensor.TYPE_ACCELEROMETER:
                        sb.append(s.getType() + " 加速度传感器(Accelerometer sensor)" + "n");
                        break;
                    case Sensor.TYPE_GYROSCOPE:
                        sb.append(s.getType() + " 陀螺仪传感器(Gyroscope sensor)" + "n");
                        break;
                    case Sensor.TYPE_LIGHT:
                        sb.append(s.getType() + " 光线传感器(Light sensor)" + "n");
                        break;
                    case Sensor.TYPE_MAGNETIC_FIELD:
                        sb.append(s.getType() + " 磁场传感器(Magnetic field sensor)" + "n");
                        break;
                    case Sensor.TYPE_ORIENTATION:
                        sb.append(s.getType() + " 方向传感器(Orientation sensor)" + "n");
                        break;
                    case Sensor.TYPE_PRESSURE:
                        sb.append(s.getType() + " 气压传感器(Pressure sensor)" + "n");
                        break;
                    case Sensor.TYPE_PROXIMITY:
                        sb.append(s.getType() + " 距离传感器(Proximity sensor)" + "n");
                        break;
                    case Sensor.TYPE_TEMPERATURE:
                        sb.append(s.getType() + " 温度传感器(Temperature sensor)" + "n");
                        break;
                    default:
                        sb.append(s.getType() + " 其他传感器" + "n");
                        break;
                }
                sb.append("设备名称:" + s.getName() + "n 设备版本:" + s.getVersion() + "n 供应商:"
                        + s.getVendor() + "nn");
            }
            txt_show.setText(sb.toString());
        }
    }

    3.Sensor传感器相关的方法以及使用套路

    从2中的例子我们可以大概地总结下获取Sensor传感器以及获取传感器相关的一些信息 流程如下:

    1)Sensor传感器的相关方法

    Step 1:获得传感器管理器:

    SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
    • Step 2:获得设备的传感器对象的列表:
    List allSensors = sm.getSensorList(Sensor.TYPE_ALL);
    • Step 3:迭代获取Sensor对象,然后调用对应方法获得传感器的相关信息:
    for(Sensor s:allSensors){
        sensor.getName();   //获得传感器名称
        sensor.getType();     //获得传感器种类
        sensor.getVendor();    //获得传感器供应商
        sensor.getVersion();    //获得传感器版本
        sensor.getResolution();  //获得精度值
        sensor.getMaximumRange(); //获得最大范围
        sensor.getPower();        //传感器使用时的耗电量 
    }

    2)传感器的使用套路

    一般我们是很少说直接去获取Sensor,然后获取上面这些信息的!因为这没什么 大的作用,我们更多的时候是去获取传感器采集到的数据,比如获取当前的大气压, 或者方向传感器三个角的值,或者陀螺仪的值这样~而大部分的传感器数据采集都是 下面的一个套路:

    ~Step 1:获得传感器管理器:

    SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); 

    ~Step 2:调用特定方法获得需要的传感器:

    比如这里获取的是方向传感器,想获得什么传感器自己查API~:

    Sensor mSensorOrientation = sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);

    ~Step 3:实现SensorEventListener接口,重写onSensorChanged和onAccuracyChanged的方法!

    onSensorChanged:当传感器的值变化时会回调

    onAccuracyChanged:当传感器的进度发生改变时会回调

    @Override
    public void onSensorChanged(SensorEvent event) {
        final float[] _Data = event.values;
       this.mService.onSensorChanged(_Data[0],_Data[1],_Data[2]);
    }
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    平时拿传感器数据,基本都会从这个SensorEvent入手。这个类里有一个values的变量,它的类型是Float[]。需要注意的是,这个变量最多只有三个元素,而且不同传感器下,这几个元素对应的含义并不一样。比如在方向传感器里,第一个元素表示方位角;到了气压传感器中,第一个元素对应的就是气压值。

    ~Step 4:SensorManager对象调用registerListener注册监听器:

    ms.registerListener(mContext, mSensorOrientation, android.hardware.SensorManager.SENSOR_DELAY_UI);
    

    方法也很简单,对应的参数:上下文对象,Sensor传感器对象, 以及传感器的延时时间的精度密度,有四个可选值:

    • SENSOR_DELAY_FASTEST——延时:0ms
    • SENSOR_DELAY_GAME——延时:20ms
    • SENSOR_DELAY_UI——延时:60ms
    • SENSOR_DELAY_NORMAL——延时:200ms

    当然低延时意味着更频繁的检车,更意味着更多的电量消耗,如果不是要求精度非常高的建议 别使用太高精度的,一般用第三个较多~自己衡量衡量吧~

    ~Step 5:监听器的取消注册:

    用完就放,一个很好的习惯,一般我们可以把他写到Activity或者Service的销毁方法中:

    ms.registerListener(mContext, mSensorOrientation, android.hardware.SensorManager.SENSOR_DELAY_UI);

    好的,套路非常简单~

    4.本节示例代码下载:

    SensorDemo1.zip

    本节小结:

    好的,本节给大家讲解了下Android中的传感器的介绍以及如何了解自己手机所支持的传感器, 除了网上查,也可以自己写代码测,然后还讲解了Sensor传感器相关信息获取的方法流程,最后 还讲解了采集传感器数据的套路,后面我们会针对一些常用的传感器的用法进行剖析,敬请期待~

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    系统应用 传感器
    相关文章 更多
    寻影 Meet Flip 会议摄像头发布:一体化翻折设计、搭索尼 1/2 英寸传感器,599 元
    寻影 Meet Flip 会议摄像头发布:一体化翻折设计、搭索尼 1/2 英寸传感器,599 元

    寻影推出MeetFlip4KAI会议摄像头:一体化翻折设计搭配金属转轴,搭载索尼1/2英寸传感器,支持4K@30fps与相位对焦。具备AI构图、挥手控制变焦、双麦克风四种收音模式及美颜功能,首发价599元。

    新型量子传感器可探测引力波和暗物质
    新型量子传感器可探测引力波和暗物质

    一种新型量子传感器通过两个不同位置的原子干涉仪共用同一束激光测量,有效抵消激光噪声,成功提取微弱信号。实验表明该装置能排除噪声干扰,捕捉模拟的早期引力波和超轻暗物质信号,为研究超大质量黑洞形成和暗物质本质开辟新途径。

    消息称索尼黑卡 RX10 V 相机 7 月 9 日发布:升级新处理器,传感器与镜头不变
    消息称索尼黑卡 RX10 V 相机 7 月 9 日发布:升级新处理器,传感器与镜头不变

    索尼黑卡RX10V相机将于七月九日发布,核心升级为新处理器与NP-FZ100电池,运算速度与自动对焦性能均大幅提升,传感器与镜头沿用前代一英寸两千万像素CMOS及24-600mmF2.4-F4镜头。此外,FX5电影摄影机也预计于7月中旬后登场。

    索尼 FX5 电影摄影机实拍图首曝:威尼斯菜单,16MP 全堆栈传感器支持 5K 片门全开、三原生 ISO
    索尼 FX5 电影摄影机实拍图首曝:威尼斯菜单,16MP 全堆栈传感器支持 5K 片门全开、三原生 ISO

    索尼FX5电影摄影机实拍图曝光,菜单采用威尼斯风格,搭载1600万像素全堆栈传感器,支持5K片门全开、三原生ISO,可机内录制X-OCNLTRAW格式,具备高动态范围和优秀低光性能,采用紧凑机身设计,画质出色,预计本月下旬发布。

    斗鱼直播手机版设置不允许斗鱼广告访问传感器的方法
    斗鱼直播手机版设置不允许斗鱼广告访问传感器的方法

    斗鱼APP,作为备受欢迎的直播平台,其首页界面内容丰富多样,特别适合喜欢通过直播进行社交互动的人群。它不仅提供了大量的游戏类直播、短视频和资讯文章,还支持用户进行自主创作和分享。然而,有部分用户反映,在使用过程中经常会受到“摇一摇”“扭一扭”等基于传感器触发的广告干扰,这对正常的使用体验造成了影响。

    曝尼康 DL 紧凑型数码相机有望复活,配 1 英寸传感器和变焦镜头
    曝尼康 DL 紧凑型数码相机有望复活,配 1 英寸传感器和变焦镜头

    尼康DL系列紧凑型数码相机有望复活,搭载2400万像素堆栈式1英寸传感器与变焦镜头,机身设计接近原DL18-50和DL24-85,或合并为24-70版本,支持灵活颜色控制,附皮革相机包,EVF可单独购买。目前仍属爆料阶段。

    中国科学家研发低噪声高灵敏磁传感器,1赫兹下可达15.7纳特斯拉
    中国科学家研发低噪声高灵敏磁传感器,1赫兹下可达15.7纳特斯拉

    IT之家 8 月 15 日消息,中国科学院合肥物质科学研究院强磁场科学中心联合中国科学院宁波材料技术与工程研究所、宁波东方理工大学,围绕通过调控自旋织构动力学来抑制磁传感器噪声这一物理机制取得进展,成功研制出一种同时具备高灵敏度和低噪声特性的反常霍尔磁传感器。相关成果已经发表于《物理评论快报》。高性

    领普人体存在传感器ES5顶装版发售,69元
    领普人体存在传感器ES5顶装版发售,69元

    领普人体存在传感器ES5顶装版售价69元,采用雷达、红外与光照三模融合设计,可探测呼吸、微动等细微动作。顶装需预留75mm孔位及零火线,支持30°角度调节,运动探测直径14米,存在探测直径10米。提供融合与雷达双模式,支持一键扫描干扰源,内置光照传感器联动灯具。

    索尼推出黑卡 RX10V 长焦相机:2010 万像素 1 英寸传感器、等效 24-600mm 镜头,国行 15199 元
    索尼推出黑卡 RX10V 长焦相机:2010 万像素 1 英寸传感器、等效 24-600mm 镜头,国行 15199 元

    索尼全新黑卡RX10V第五代旗舰级长焦相机发布,搭载2010万像素高画质1英寸堆栈式传感器与等效24-600mm超远摄镜头,国行15199元。支持每秒30张高速连拍、AI智能主体识别系统、无裁切4K60p视频录制,配备新型NP-FZ100锂电池,续航约630张照片。

    尼康新品 APS-C 高端相机曝光:青春版 Z9/ZR,搭载 45MP 堆栈式传感器
    尼康新品 APS-C 高端相机曝光:青春版 Z9/ZR,搭载 45MP 堆栈式传感器

    据爆料,尼康即将推出一款APS-C高端相机,搭载4500万像素堆栈式传感器,具备高速连拍能力,定位类似D500后续机型,或为融合RED技术的迷你Z9/ZR变体,预计8至9月发布。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。