随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在Android中开发传感器十分简单,只需下面三步:

1、调用Context的getSystemService(Context.SENSOR_SERVICE)方法获得传感器管理服务(SensorManager)。

2、调用SensorManager的getDefaultSensor(int type)方法获取指定类型的传感器。

3、一般在onResume()方法中调用SensorManager的registerListener(SensorEventListener listener,Sensor sensor,int rate)注册监听器.该方法三个参数说明如下:

listener:监听传感器事件的监听器。该监听器需要实现SensorEventListener接口。

sensor:传感器对象。

rate:指定获取传感器数据的频率。支持以下几种频率值:

下面演示加速度传感器应用,分别以真机和模拟器两种方式测试,两种方式略有差别。

真机:

Activity:

package com.home;import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;public class AccelerometerActivity extends Activity implementsSensorEventListener {// 定义系统的传感器管理服务private SensorManager sensorManager;private TextView showText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);showText = (TextView) findViewById(R.id.main_tv_show);// 获取系统的传感器管理服务sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);}@Overrideprotected void onResume() {super.onResume();// 为系统的加速度传感器注册监听器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onStop() {// 取消注册sensorManager.unregisterListener(this);super.onStop();}// 当传感器精度改变时回调该方法@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}// 当传感器的值发生改变时回调该方法@Overridepublic void onSensorChanged(SensorEvent event) {if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {float[] values = event.values;StringBuffer sb = new StringBuffer();sb.append("X轴上的加速度:" + values[0] + "\n");sb.append("Y轴上的加速度:" + values[1] + "\n");sb.append("Z轴上的加速度:" + values[2] + "\n");showText.setText(sb.toString());}}}

布局文件只有一个TextView,在此省略。

模拟器:

模拟器本身并不支持传感器,但可以使用一款传感器模拟工具SensorSimulator来开发、调试传感器应用。这款工具需要在PC端和模拟器端同时安装,并建立连接,然后就可以通过PC端来改变手机的传感数据了。至于该工具的下载和安装这里就不介绍了,可以去官网下载sensorsimulator-lib-2.0-rc1.jar。

Activity:

package com.lovo;import org.openintents.sensorsimulator.hardware.Sensor;
import org.openintents.sensorsimulator.hardware.SensorEvent;
import org.openintents.sensorsimulator.hardware.SensorEventListener;
import org.openintents.sensorsimulator.hardware.SensorManagerSimulator;import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;public class MainActivity extends Activity implements SensorEventListener {// 定义模拟器的Sensor管理器private SensorManagerSimulator mSensorManager;private TextView showText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);showText = (TextView) findViewById(R.id.main_tv_show);// 获取传感器模拟器的传感器管理服务mSensorManager = SensorManagerSimulator.getSystemService(this,SENSOR_SERVICE);// 连接传感器模拟器mSensorManager.connectSimulator();}@Overrideprotected void onResume() {super.onResume();// 为系统的加速度传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);}@Overrideprotected void onStop() {super.onStop();// 取消注册mSensorManager.unregisterListener(this);}@Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) {}@Overridepublic void onSensorChanged(SensorEvent event) {if (event.type == Sensor.TYPE_ACCELEROMETER) {float[] values = event.values;StringBuffer sb = new StringBuffer();sb.append("X轴上的加速度:" + values[0] + "\n");sb.append("Y轴上的加速度:" + values[1] + "\n");sb.append("Z轴上的加速度:" + values[2] + "\n");showText.setText(sb.toString());}}}

还需要权限:

 <uses-permission android:name="android.permission.INTERNET"/>

从上面两个程序可以看出,它们获取传感器管理服务的方式不同,模拟器方式还需要建立连接,加上访问网络权限。还有一些类导的包不一样。

Android的传感器应用相关推荐

  1. android动作传感器

    android动作传感器 Android平台支持一些用于监视设备动作的传感器(这样的传感器共有5个).其中两个(加速传感器和陀螺仪传感器)是纯的硬件传感器.另外三个(重力传感器.线性加速传感器和旋转向 ...

  2. Android加速度传感器

    Android加速度传感器 效果图 手机平放桌面的两张截屏,数据一直在刷新 源码 下载地址(Android Studio工程):http://download.csdn.net/detail/q487 ...

  3. android 传感器ceshi,Android代码-传感器-测试手机支持那几种传感

    Android代码----传感器-----测试手机支持那几种传感 一个小小Demo检测手机支持那几种传感: 具体代码如下: [Java代码]DemoSensorActivity.java packag ...

  4. android磁场传感器页面布局在哪,教程:Android传感器—传感器查询demo

    今天给大家带来一个篇安卓传感器查询的干货教程,五一出去旅游看人山人海,不如宅在家学技术! 在Android系统中提供有加速度.磁场.方向.陀螺仪.光线.压力.温度和接近等传感器.传感器系统会主动对上层 ...

  5. 我的物联网之路-Android手机传感器概况(地磁为主)

    前言:本文主要以地磁为主介绍android的传感器类型,以及使用方法,再提供一个简单的demo供新手进行测试.研究生方向主要是物联网方向,虽然刚接触不久,但也有个大致的概念,本文算是开山之作-_-,之 ...

  6. Android方向传感器学习之指南针示例

    刚刚跟着视频学习了关于Android中传感器的操作示例,利用方向传感器做了一个很简单的指南针应用...平时工作项目中很少有用到传感器功能,所以很多都不知道,现在自学些,当作慢慢入门吧... 首先贴出软 ...

  7. android传感器_充分利用Android的传感器

    android传感器 Android平台特别适合Java™开发人员,是使用硬件传感器创建创新应用程序的理想选择. 了解可用于Android应用程序的一些接口选项,包括使用传感器子系统和录制音频片段. ...

  8. Android 加速度传感器(G-Sensor)

    Android 加速度传感器的类型是  Sensor.TYPE_ACCELEROMETER 通过 android.hardware.SensorEvent 返回加速度传感器值. 加速度传感器返回值的单 ...

  9. android中传感器的应用

    google给android一共提供了14种传感器.下面我就根据官方的reference以及API指南,将所有的传感器做一介绍,并附上代码例子. 大部分Android平台的设备都带有多个传感器,使你能 ...

  10. Android重力传感器研究

    android重力传感器简介: android的重力传感器在各个方面有很广的应用,在android中,重力传感器使用惯性坐标系,所谓惯性坐标系是为了简化世界坐标而引入的一种新的坐标系.惯性坐标系的原点 ...

最新文章

  1. 测试linux下磁盘的读写速率
  2. 美团实习面试:熟悉红黑树是吧?能不能写一下?
  3. oracle10g cssd日志,【案例】Oracle CSSD进程HANG导致RAC节点重启原因分析笔记
  4. python写背单词软件_python背单词小程序
  5. Angular7 ng-zorro-antd 制作右键菜单
  6. Python 装饰器原理和基本实现
  7. uCOS-II任务的挂起和恢复
  8. HDU 5787 wolf Number 数位dp
  9. 9个细节告诉你,达摩院过去一年做了啥
  10. extjs 按钮小箭头展开panel_汽车按钮都是英文看不懂?视频教你认清车内所有按钮,看完秒懂...
  11. python的django介绍_django Django简介 - 刘江的django教程
  12. jQuery Mobile中页面page的data-*选项
  13. 计算机CG技术未来发展前景,CG就业前景怎么样?
  14. adminlte3 动态菜单_一本科学菜单,十倍利润增长 | 跟巴奴学餐饮业的精简风:菜单越薄,利润越厚!...
  15. 如何让语音芯片与功放芯片之间更好地配合让音效更好
  16. ERROR: canceling statement due to conflict with recovery
  17. Win10 + Ubuntu 安装教程(痛苦踩坑)
  18. 概率论基础(3)一维随机变量(离散型和连续型)
  19. “报告星”自动报告生成系统介绍
  20. 大数据学习——spark运营案例

热门文章

  1. 内部温度传感器和光敏传感器实验
  2. medoo 使用分页_Medoo入门-使用示例
  3. 海上风电将满足欧盟四分之一的电力需求
  4. cs8900的基地址
  5. matlab图形矫正,图像畸变矫正算法实现 matlab版
  6. 【css 动画】css实现奔跑的北极熊
  7. 计算机毕业设计如何做
  8. 目标检测SSD学习笔记
  9. “性能+安全”天花板,芯驰科技发布车规MCU E3系列产品
  10. java电子面单开发_电子面单 - 无需录单提供快递发货,接口返回html快递模板及单号 – 基于ThinkPHP和Bootstrap的极速后台开发框架...