传感器是第二代智能手机的重要标志之一。可以毫不客气地说,现在市面上的Android手机和平板电脑(TV除外)都内置了传感器。否则很多游戏和应用就无法使用了。Android SDK支持的传感器并不是每一部Android设备都支持所有的传感器。大多数Android设备只支持一部分传感器。例如,方向传感器(电子罗盘)、重力传感器(屏幕翻转、赛车游戏等)。

动作(Motion)传感器

环境(Environmental)传感器

位置(Position)传感器

1.这类传感器在三个轴(X、Y、Z)上测量加速度和旋转角度。包括如下几个传感器。

加速(accelerometer)传感器

重力(gravity)传感器

陀螺仪(gyroscope)传感器

旋转向量(rotational vector )传感器

2.这类传感器可以测量不同环境的参数,例如,周围环境的空气温度和压强、光照强度和湿度。包括如下几个传感器。

湿度(barometer)传感器

光线(photometer)传感器

温度(thermometer)传感器

3.这类传感器可以测量设备的物理位置。包括如下几个传感器。

方向(orientation)传感器

磁力(magnetometer)传感器

Android SDK提供了Android sensor framework,可以用来访问当前Android设备内置的传感器。ASF提供了很多类和接口,可以帮助我们完成各种与传感器有关的任务。例如,可以利用ASF完成下面的工作。
确定当前Android设备内置了哪些传感器。
确定某一个传感器的技术指标。例如,该传感器能测量的最大范围、传感器的制造商、对电量的要求、测量的精度等。
获取传感器传回来的数据,以及定义传感器回传数据的精度。
注册和注销传感器事件监听器,这些监听器用于监听传感器的变化,通常从传感器回传的数据需要利用这些监听器完成

ASF允许我们访问很多传感器类型,这些传感器有一些是基于硬件的传感器,还有一些是基于软件的传感器。基于硬件的传感器就是直接以芯片形式嵌入到Android设备中,这些传感器直接从外部环境获取数据,例如,加速传感器、磁场传感器都属于硬件传感器。基于软件的传感器并不是实际的硬件芯片,尽管这些传感器重使用上很像基于硬件的传感器。基于软件的传感器传回的数据本质上也来自于基于硬件的传感器,只是这些数据通常会经过二次加工,也就是说,基于软件的传感器传回的数据可能来自一个或多个基于硬件的传感器,并且有可能Android系统使用某些算法处理了这些数据。所以基于软件的传感器也可以称为虚拟(virtual)传感器或合成(synthetic)传感器。

所有的常量都在Sensor类中定义:
TYPE_ACCELEROMETER:加速传感器(硬件传感器)
TYPE_AMBIENT_TEMPERATURE:温度传感器(硬件传感器)
TYPE_GRAVITY:重力传感器(硬件或软件传感器)
TYPE_GYROSCOPE:陀螺仪传感器(硬件传感器)
TYPE_LIGHT:光线传感器(硬件传感器)
TYPE_LINEAR_ACCELERATION:线性加速传感器(硬件或软件传感器)
TYPE_MAGNETIC_FIELD:磁场传感器(硬件传感器)

TYPE_ORIENTATION:方向传感器(软件传感器),数据来自重力和磁场传感器
TYPE_PRESSURE:压力传感器(硬件传感器)
TYPE_PROXIMITY:临近传感器(硬件传感器)
TYPE_RELATIVE_HUMIDITY:湿度传感器(硬件传感器)
TYPE_ROTATION_VECTOR:旋转向量传感器(硬件或软件传感器)
TYPE_TEMPERATURE:温度传感器(硬件传感器),从Android4.0(API Level = 14)开始被TYPE_AMBIENT_TEMPERATURE取代。

SensorManager类:用于创建sensor service的实例。该类提供了很多用于访问和枚举传感器,注册和注销传感器监听器的方法。而且还提供了与传感器精度、扫描频率、校正有关的常量。

Sensor类:提供了一些用于获取传感器技术参数的方法。如版本、类型、生产商等。

SensorEvent类:系统使用该类创建传感器事件对象。该对象可以提供与传感器事件有关的信息。传感器事件对象包括的信息有原始的传感器回传数据、传感器类型、数据的精度以及触发事件的时间。

SensorEventListener接口:该接口包含两个回调方法,当传感器的回传值或精度发生变化时,系统会调用这两个回调方法。

现在就来编写代码:

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv" /></RelativeLayout>

MainActivity:

public class MainActivity extends Activity {private TextView tv;private SensorManager sensor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView) findViewById(R.id.tv);sensor=(SensorManager) getSystemService(SENSOR_SERVICE);List<Sensor>list=sensor.getSensorList(Sensor.TYPE_ALL);tv.append("您的手机有"+list.size()+"个传感器");for(Sensor sen:list){String msg="类型:"+sen.getType()+"名字:"+sen.getName()+"版本:"+sen.getVersion()+"供应商:"+sen.getVendor()+"\n";//tv.append(msg);//追加switch (sen.getType()) {case Sensor.TYPE_ACCELEROMETER://加速度传感器tv.append("加速度传感器"+msg);break;case Sensor.TYPE_AMBIENT_TEMPERATURE:tv.append("温度传感器"+msg);break;case Sensor.TYPE_GRAVITY:tv.append("重力传感器"+msg);break;case Sensor.TYPE_GYROSCOPE:tv.append("陀螺仪传感器"+msg);break;case Sensor.TYPE_LIGHT:tv.append("光线传感线"+msg);break;case Sensor.TYPE_MAGNETIC_FIELD:tv.append("磁场传感器"+msg);break;default:break;}}}}

效果图我就不贴了~

源码:源码下载免费

Android之如何获取手机中所有的传感器相关推荐

  1. android 获取图片上某一个文字位置_android 获取手机中的所有图片或某一目录下的图片方法...

    获取手机中的所有图片,并过滤获取某一目录下的图片.(注释掉的代码可以按照目录分组) private void getAllPhotoInfo() { new Thread(new Runnable() ...

  2. Android获取手机中外置内存卡、内置内存卡、手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  3. Android获取系统相册图片选中地址,获取手机中的所有图片地址自定义相册

    一.获取手机中的值 1.首先在使用读写sd卡权限 2.获取手机中的所有图片: 注意代码中的getGalleryPhotos(getContentResolver()) 方法获取所有地址 获取所有图片地 ...

  4. Android中获取手机中的联系人信息

    #Android中获取手机中的联系人信息 1.0.查看系统通讯录的表,表路径:data->data->com.android.providers.contacts->database ...

  5. Android获取手机中外置内存卡 内置内存卡 手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  6. android qq apk,仿QQ获取手机中的APK并分享的实现

    前几天看到同事里有一个界面绚丽的应用,觉得有点意思,就让他把APK发给我,我想反编译看看里面的代码.结果,这哥们在手机里找了好一阵子,最后给我说:手机没有root,找不到APK文件在哪里.我再让他试试 ...

  7. Android 获取手机中的图片信息的两种方法

    1, Android 使用ContentProvider扫描手机中的图片 // 必须在查找前进行全盘的扫描,否则新加入的图片是无法得到显示的(加入对sd卡操作的权限)//todo 仅限于android ...

  8. Android获取手机中的所有音乐地址

    //获取手机中的所有音乐 public static LinkedHashMap<Integer, MusicDatas> getAllMusicFile(Context context) ...

  9. 如何获取手机中连接的wifi名称?

    最近还是比较忙的,有时间了就赶紧来给大家分享点东西,今天的代码是如何获取手机中链接的WIFi名称. 已经用demo测试过了,所以就直接上代码喽. #import "ViewControlle ...

最新文章

  1. matlab2ask和2psk仿真实验代码
  2. python 把if 写在一行的两种方式
  3. 大话数据结构 : 二叉排序树
  4. Java基础入门笔记-布尔类型变量
  5. 用masterpage后页面定位
  6. 华为厉害了:已启动6G网络技术研究
  7. 国内达梦数据库相关函数-时间日期
  8. HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
  9. layui 鼠标移入变为小手_如何在 LayUI 数据表格的列元素上,鼠标悬浮,显示所有文字内容(修改源码)...
  10. Coprime Sequence
  11. MFC学习--文本框
  12. linux脚本取消空格,Shell去除空格和空行的方法
  13. 深度学习 个人理解使用余弦相似度对人脸图片识别的过程
  14. 使用Java轻松破解顶象滑动拼图验证码,成功率接近100%?
  15. python3.6 scrapy模块查询POS后台获取指定时间和状态的订单存入到excel表格中
  16. 实验吧:天网管理系统
  17. 浅谈响应式开发与自适应布局!
  18. 【go/方法记录】数学中的组合问题
  19. python微信api_用Python实现微信公众号API素材库图文消息抓取
  20. MLOps介绍:机器学习技术债

热门文章

  1. 在给定范围内寻找 a^3+b^3=c^3+d^3
  2. 创维E900V21E_创维E900V21C_创维E900V21D当贝乐家安卓9语音鸿蒙架构固件包刷机教程及救砖rom全网通固件
  3. 【零基础】极星9.5量化入门二:滚动止盈策略
  4. 【渝粤教育】国家开放大学2018年秋季 2777T绿地规划 参考试题
  5. Lua初探(一)简介
  6. 如何改善自己的情绪?
  7. 女人的美丽是吃出来的
  8. vue 得到枚举个数_vue项目中枚举值统一维护管理
  9. java动态添加枚举值,实现枚举值的动态扩展
  10. mysql修改常用的修改语句