Android传感器可以随处监控环境
如:方向、加速表、光线、磁场、临近性、温度等
android.hardware.SensorManager包含几个常量,这表示Android传感器系统的不同方面,包括:
传感器类型方向、加速表、光线、磁场、临近性、温度等。采样率最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对传感器子系统的一个提示,或者一个建议。不保证特定的采样率可用。准确性高、低、中、不可靠。
SensorListener接口是传感器应用程序的中心。它包括两个必需方法:
onSensorChanged(intsensor,floatvalues[])方法在传感器值更改时调用。该方法只对受此应用程序监视的传感器调用(更多内容见下文)。该方法的参数包括:一个整数,指示更改的传感器;一个浮点值数组,表示传感器数据本身。有些传感器只提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。
当传感器的准确性更改时,将调用onAccuracyChanged(intsensor,intaccuracy)方法。参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。
要与传感器交互,应用程序必须注册以侦听与一个或多个传感器相关的活动。注册使用SensorManager类的registerListener方法完成。本文中的代码示例演示了如何注册和注销SensorListener。
示例1:
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.widget.TextView;
importandroid.hardware.SensorManager;
importandroid.hardware.SensorListener;
publicclassIBMEyesextendsActivityimplementsSensorListener{
finalStringtag="IBMEyes";
SensorManagersm=null;
TextViewxViewA=null;
TextViewyViewA=null;
TextViewzViewA=null;
TextViewxViewO=null;
TextViewyViewO=null;
TextViewzViewO=null;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//getreferencetoSensorManager
sm=(SensorManager)getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
xViewA=(TextView)findViewById(R.id.xbox);
yViewA=(TextView)findViewById(R.id.ybox);
zViewA=(TextView)findViewById(R.id.zbox);
xViewO=(TextView)findViewById(R.id.xboxo);
yViewO=(TextView)findViewById(R.id.yboxo);
zViewO=(TextView)findViewById(R.id.zboxo);
}
publicvoidonSensorChanged(intsensor,float[]values){
synchronized(this){
Log.d(tag,"onSensorChanged:"+sensor+",x:"+
values[0]+",y:"+values[1]+",z:"+values[2]);
if(sensor==SensorManager.SENSOR_ORIENTATION){
xViewO.setText("OrientationX:"+values[0]);
yViewO.setText("OrientationY:"+values[1]);
zViewO.setText("OrientationZ:"+values[2]);
}
if(sensor==SensorManager.SENSOR_ACCELEROMETER){
xViewA.setText("AccelX:"+values[0]);
yViewA.setText("AccelY:"+values[1]);
zViewA.setText("AccelZ:"+values[2]);
}
}
}
publicvoidonAccuracyChanged(intsensor,intaccuracy){
Log.d(tag,"onAccuracyChanged:"+sensor+",accuracy:"+accuracy);
}
@Override
protectedvoidonResume(){
super.onResume();
//registerthisclassasalistenerfortheorientationandaccelerometersensors
sm.registerListener(this,
SensorManager.SENSOR_ORIENTATION|SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protectedvoid onPause()(){
//unregisterlistener
sm.unregisterListener(this);
super.onPause()();
}
}
该活动的onCreate方法可以引用SensorManager,其中包含所有与传感器有关的函数。
onCreate方法还建立了对6个TextView小部件的引用,您需要使用传感器数据值更新这些小部件。
onResume()方法使用对SensorManager的引用通过registerListener方法注册传感器更新:
第一个参数是实现SensorListener接口的类的实例。
第二个参数是所需传感器的位掩码。在本例中,应用程序从SENSOR_ORIENTATION和SENSOR_ACCELEROMETER请求数据。
第三个参数是一个系统提示,指出应用程序更新传感器值所需的速度。
应用程序(活动)暂停后,需要注销侦听器,这样以后就不会再收到传感器更新。
这通过SensorManager的unregisterListener方法实现。惟一的参数是SensorListener的实例。
在registerListener和unregisterListener方法调用中,应用程序使用关键字this。
注意类定义中的implements关键字,其中声明了该类实现SensorListener接口。这就是要将它传递到registerListener和unregisterListener的原因。
SensorListener必须实现两个方法onSensorChange和onAccuracyChanged。
示例应用程序不关心传感器的准确度,但关注传感器当前的X、Y和Z值。
onAccuracyChanged方法实质上不执行任何操作;它只在每次调用时添加一个日志项。
似乎经常需要调用onSensorChanged方法,因为加速表和方向传感器正在快速发送数据。
查看第一个参数确定哪个传感器在发送数据。确认了发送数据的传感器之后,
将使用方法第二个参数传递的浮点值数组中所包含的数据更新相应的UI元素
注意:在不用对传感器进行监听时,一定要及时的取消监听。
分享到:
相关推荐
Android摄像头传感器、定位等功能代码,可以直接运行在Android studio上面
本文内容包括:简介Android传感器功能传感器示例使用MediaRecorderAndroid作为传感器平台结束语下载参考资料Android是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能。...
监控旋转矢量传感器(但仅在活动可见时)。 将原始旋转矩阵转换为俯仰和滚动,以度为单位。 根据设备方向(例如纵向与横向)调整旋转值。 绘制自定义视图,包括使用 Porter-Duff 传输模式创建抗锯齿圆形切口。 更多...
Android陀螺仪编程获取旋转角度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
本研究即希望利用智能手环作为终端传感器,利用手环采集老年人的身体特征指标,开发一款基于Android的手机软件,利用手机作为终端进行运算判断,最终为子女提供远程的行为预警,可以切实为老年人带来更安心的独居...
使用 RxJava 监控硬件传感器的 Android 库。 用法 下面的代码示例演示了如何观察陀螺仪传感器。 请注意,我们正在过滤传感器读数随ReactiveSensorEvent::sensorChanged方法变化时发生的事件。还有描述传感器精度...
单片机实现,通过温度传感器,加速度传感器以及脉搏心跳传感器,对人体 的体温、姿态、心跳速率及脉搏速率进行测量,并通过 GPRS 模块或串口采 用三种法式(包括短信,WIFI 和 J2EE 服务器)传送监控数据到手机端。...
当家庭中有特别需要关注的物体和区域时,家庭的主人可在其所处的家庭环境中安装摄像头,通过网络远程观察其状况,当发生意外情况时也可通过网络监控事态的进展。随着智能移动终端的广泛普及,同时由于其特有的便携性...
针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也...
项目功能 设置系统铃声作为报警音、提示音 手势解锁 按键解锁:锁屏状态按键解锁 音量锁定 屏蔽关机 闪光灯开关 振动开关 报警模式:口袋模式/重力感应/光感应 ...混合模式:加速度传感器,距离传感器,口袋模式组合监控
Android平台上的WSN监控软件。WSN部分:硬件基础兼容的所有CC2530评估板上运行协议栈的CC2530芯片节点软件实现构建于基于实现的上,在AP层上实现所有功能逻辑。部署方法熟悉IAR以及Z-Stack协议栈忽略该部分在编译调试...
有关传感器延迟和准确度事件的信息,请参阅 Android 文档的“监控传感器事件”部分。 SensorAnnotations.bind当您想开始接收传感器事件时,应该进行调用。因为这会消耗电池寿命,所以您需要在unbind完成后调用。该...
传感器能够提供高精度和准确度的原始数据,如果您想要监控 3D 设备移动或定位,或者想要监控设备附近周围环境的变化,这些传感器非常有用。例如,游戏可能会跟踪来自设备重力传感器的读数,以推断复杂的用户手势和...
传感器测量环境数据(温度、湿度、光照度),实时监控并上行到服务器。当测量值超过设定阈值时触发蜂鸣器报警。 用户可以通过Android客户端查看测量数据,控制警报与照明开关,也可通过实体按钮进行控制。 报警逻辑...
和javaapk之前的介绍的Android项目源码通用工程维护监控录音拍照位置上传(http://www./source/50031.html)有点类似。数据来源应该是和粮站的服务端配合的,不能手动输入。感兴趣的自己下载研究一下吧。本项目是...
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...
一个Android应用程序,利用设备上的传感器来提供对物理空间的监视和保护
基于Android的智能家居监控平台设计,龚婉婉,刘士兴,本文设计了一种基于Android技术的智能家居监控平台。温度、烟雾、一氧化碳等传感器与CC2530芯片搭配,负责采集环境信息并通过Zigbee无��
传感器监控器一个简单的android应用,可在设备上找到所有可用的硬件传感器,并将来自它们的原始传入数据绘制在图形上。