获取手机中的传感器的步骤为:

  1. 获取SensorManager对象
  2. 执行SensorManager对象的getDefaultSensor()方法获取Sensor对象,这里getDefaultSensor()方法要传递一个参数,指定具体的传感器类型
  3. 获取Sensor对象中的各种属性
下面给出获取手机内传感器的实现代码:
    Log.d("BruceZhang", "以下是你的手机里的传感器:");List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);Log.d("BruceZhang", "--->");for(Sensor sensor: sensors){Log.d("BruceZhang", sensor.getName());}//通过使用getDefaultSensor方法获得一个特定的传感器
//              Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

在知道怎么获取传感器之后,我们需要使用程序获取传感器的值,下面给出实例代码:

        SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);sensorManager.registerListener(new SensorEventListener() {/** SensorEvent event* 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象* 一般会把这个方法放在onCreate里,不用手动的去获取*/@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubfloat auc=event.accuracy;//这里的第一个元素代表的是光线的强度float lux=event.values[0];Log.d("BruceZhang", auc+"");Log.d("BruceZhang", lux+"");}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}, sensor, SensorManager.SENSOR_DELAY_NORMAL);//SensorManager.SENSOR_DELAY_NORMAL//这个参数就是设置传感器的采样率}

传感器有一系列的属性:

1、传感器的采样率
  a) SENSOR_DELAY_NOMAL    (200000微秒)
  b) SENSOR_DELAY_UI       (60000微秒)
  c) SENSOR_DELAY_GAME     (20000微秒)
  d) SENSOR_DELAY_FASTEST  (0微秒)
  
2、传感器的属性
  a) 传感器的名称
  b) 传感器制造商
  c) 传感器功率
  d) 传感器的resulotion
获取这些属性的方法也很简单,代码如下:
SensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);sensorManager.registerListener(new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stub//传感器的名字String sensorName=event.sensor.getName();//传感器制造商的名字String sensorVendor=event.sensor.getVendor();//传感器的分辨率,传感器所能识别的最小的精度是多少float sensorRevolution=event.sensor.getResolution();//传感器的功率float sensorPower=event.sensor.getPower();//传感器取得数据的时间是多少double timeStamp=event.timestamp;//打印数据Log.d("BruceZhang", sensorName+"");Log.d("BruceZhang", sensorVendor+"");Log.d("BruceZhang", sensorRevolution+"");Log.d("BruceZhang", sensorPower+"");Log.d("BruceZhang", timeStamp+"");}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}, sensor, SensorManager.SENSOR_DELAY_NORMAL);}

下面实现的这个实例实现了上述内容的综合:

实例的完整代码如下:
/** 传感器会通过传感器事件把值传给用户* 所以,我们的应用程序是被动的,等待传感器把数据传递给SensorEvent对象*/
public class MainActivity extends Activity {private Button button;private Button button2;private Button button3;private SensorManager sensorManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//得到SensorManager对象sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);button=(Button)findViewById(R.id.sensorButton);button2=(Button)findViewById(R.id.lightButton);button3=(Button)findViewById(R.id.lightButton2);button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);sensorManager.registerListener(new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stub//传感器的名字String sensorName=event.sensor.getName();//传感器制造商的名字String sensorVendor=event.sensor.getVendor();//传感器的分辨率,传感器所能识别的最小的精度是多少float sensorRevolution=event.sensor.getResolution();//传感器的功率float sensorPower=event.sensor.getPower();//传感器取得数据的时间是多少double timeStamp=event.timestamp;//打印数据Log.d("BruceZhang", sensorName+"");Log.d("BruceZhang", sensorVendor+"");Log.d("BruceZhang", sensorRevolution+"");Log.d("BruceZhang", sensorPower+"");Log.d("BruceZhang", timeStamp+"");}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}, sensor, SensorManager.SENSOR_DELAY_NORMAL);}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSensorManager sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);sensorManager.registerListener(new SensorEventListener() {/** SensorEvent event* 一旦传感器感知外界条件发生变化,就会把相应的数据传递给这个对象* 一般会把这个方法放在onCreate里,不用手动的去获取*/@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubfloat auc=event.accuracy;//这里的第一个元素代表的是光线的强度float lux=event.values[0];Log.d("BruceZhang", auc+"");Log.d("BruceZhang", lux+"");}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}}, sensor, SensorManager.SENSOR_DELAY_NORMAL);//SensorManager.SENSOR_DELAY_NORMAL//这个参数就是设置传感器的采样率}});button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubLog.d("BruceZhang", "以下是你的手机里的传感器:");List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL);Log.d("BruceZhang", "--->");for(Sensor sensor: sensors){Log.d("BruceZhang", sensor.getName());}//通过使用getDefaultSensor方法获得一个特定的传感器
//              Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;}}

Android开发--传感器介绍相关推荐

  1. android studio开发工具介绍,Android应用开发之Android开发工具介绍、Android Studio配置...

    本文将带你了解Android应用开发之Android开发工具介绍.Android Studio配置,希望本文对大家学Android有所帮助. 2.1   Android Studio配置 2.1.1 ...

  2. Pro Android 4 第一章 Android 开发平台介绍

    当今这个时代,计算比以往任何一个时代都距离人们更近.各种手持设备已经变身为计算平台.无论是平板和是手机,移动设备凭借其强大的通用计算能力,已经成为真正意义上的个人电脑(PC).所有的传统计算机厂商已经 ...

  3. Kotlin on Android 开发环境介绍

    Kotlin 被 Google 采纳为 Android 开发一级编程语言,到现在也一年多了,我们团队从去年 10 月份开始部分项目尝试用 Kotlin 开发,到现在决定推广到全部项目,因为一旦用上 K ...

  4. 基于人人网的Android开发流程介绍

    人人网(www.renren.com)前身为校内网,是中国最大.最受用户欢迎的网络SNS平台.人人网目前针对不同领域的开发者,提供了相应的教程和文档,目前主要分为"站内应用开发". ...

  5. 《智能设备艺术、科技、文化作品实例开发与设计》android开发系列介绍---2.1棋类作品:华容道

    第四章 棋类:  华容道 三子棋AI算法 手机棋牌开发的优点和缺点 与其他手机端游戏相比较,手机棋牌开发演化的手游竞技,与休闲性合二为一,游艺兼备.手游玩家随着公共WIFI的普及,参与门槛越来越低.加 ...

  6. 《智能设备艺术、科技、文化作品实例开发与设计》android开发系列介绍---1.2琴类作品:吉他new

    第一章 琴类作品 1.2吉他开发 吉他是音乐中的乐器王子, 又叫六弦琴拥有广阔的音域,最丰富的现场表现力,华丽而高难度的指弹技巧,又是伴奏的神器,现场演唱出优美而漂亮的音乐,适合任何场合任何环境的表现 ...

  7. 《智能设备艺术、科技、文化作品实例开发与设计》android开发系列介绍---1.2琴类作品:吉他

    第一章 琴类作品 1.2吉他开发 吉他是音乐中的乐器王子, 又叫六弦琴拥有广阔的音域,最丰富的现场表现力,华丽而高难度的指弹技巧,又是伴奏的神器,现场演唱出优美而漂亮的音乐,适合任何场合任何环境的表现 ...

  8. Android开发工具介绍

    AndroidSDK:Android standard develop kits 安卓开发的工具集 目前主流的安卓开发工具: 1.Adnroid-Adt-bundle SDKManager.exe:  ...

  9. Android开发--BroadcastReceiver介绍1

    从名字中大概就知道了意思,BroadcastReceiver就是广播接收器的意思,它运行在后台,始终处于监听的状态,当有系统消息或用户自定义的消息到达时,回调onReceiver()函数,着这个例子中 ...

最新文章

  1. 这份HCIE-Routing Switching笔试试题,你能答对几道?
  2. 稀疏多项式的运算用链表_用漫画告诉你—什么是HashMap?
  3. mysql增删改查 dao_MYSQL 之 JDBC(七):增删改查(五) DAO设计模式
  4. python元编程运用_Python 中的元编程
  5. node本地连接服务器的数据库_Linux本地连接阿里云服务器,以及下载node.js配置环境...
  6. [书目20081126]转型:用对策略,做对事
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线书城购物网站
  8. (zt)ACE中的Proactor介绍和应用实例
  9. Chrome浏览器V43版本不支持silverlight 5.0的解决办法
  10. PMBOK--项目整合管理
  11. java实现数据库回滚,java 数据库操作,事宜回滚
  12. 百度地图api初次申请及简单应用
  13. 浙大吴飞“舌战”阿里贾扬清:AI内卷与年薪百万,哪个才是真实?
  14. 游戏模拟器成了外挂帮凶,灰产对抗再升级
  15. 国内外AI绘画『文生图』大模型效果对比
  16. 实现一个文字识别(图片转文字)工具
  17. SQL模糊查询时LIKE怎样跟变量
  18. SOAP协议规范介绍
  19. 日程安排小程序实战教程(上篇)
  20. 成功拿下猿辅导+斗鱼+滴滴+字节+腾讯offer,实战解析

热门文章

  1. Windows通过VNC访问Kylin桌面环境
  2. Sublime text3中配置Github
  3. 常用元素位置与大小总结
  4. Storm【压力测试】- 系列1: 进行简单的压力测试
  5. 长城电脑或收购夏新电子笔记本业务
  6. MySQL从主从到代理
  7. Confluence 6 其他需要备份和恢复的地方
  8. WPF中的依赖项属性
  9. BigDecimalf大小的比较
  10. C#开发学习——web服务器端控件