android的各种传感器
来源:互联网 发布:淘宝视频下载器破解版 编辑:程序博客网 时间:2024/05/21 17:40
一、android设备里的传感器
android设备有11中传感器
SensorManager manager=(SensorManager) getSystemService(SENSOR_SERVICE);//获取传感器Manager
List<Sensor> list = manager.getSensorList(Sensor.TYPE_ALL);获取所有的传感器集合
通过List中的sensor的方法sensor.getType()获取此传感器的类型;android设备有以下传感器:
Sensor.TYPE_ACCELEROMETER:加速度传感器
以m/s2为单位测量应用于设备三轴(X、Y、Z)的加速力,包括重力
Sensor.TYPE_GRAVITY:重力传感器
以m/s2为单位测量应用于设备三轴(X、Y、Z)的重力
Sensor.TYPE_AMBIENT_TEMPERATURE:温度传感器
以摄氏度(°C)为单位测量周围温度。
Sensor.TYPE_GYROSCOPE:陀螺仪传感器
以弧度/秒(rad/s)为单位,测量设备围绕三个物理轴(X、Y、Z)的旋转率
Sensor.TYPE_LIGHT:环境光线传感器
以lx为单位,测量周围的亮度等级(照度)
Sensor.TYPE_LINEAR_ACCELERATION:线性加速度
以m/s2为单位测量应用于设备三个物理轴(X、Y、Z)的加速力,重力除外
Sensor.TYPE_MAGNETIC_FIELD:电磁场传感器
以μT为单位,测量设备周围三个物理轴(x,y,z)的磁场。
Sensor.TYPE_PRESSURE:压力传感器
以hPa或mBar为单位来测量周围空气的压力
Sensor.TYPE_PROXIMITY:距离传感器
以cm为单位,测量一个对象相对与设备屏幕的距离。这个传感器通常用于判断手持设备是否被举到了一个人的耳朵附近。
Sensor.TYPE_RELATIVE_HUMIDITY:相对湿度传感器
以百分比(%)为单位测量周围的相对湿度
Sensor.TYPE_ROTATION_VECTOR:旋转矢量
通过提供设备旋转矢量的三个要素来测量设备的方向
sensor.getVendor 获取此传感器的产商
sensor.getVersion 获取此传感器的版本
设置传感器的事件
SensorManager Sensor=manager.getDefaultSensor(Sensor.传感器类型);
manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);//对sensor设置监听器第三个值有game fast ui等,数据传输使用的场景,对传感器的数据采集时间间隔不同;
监听事件有两个方法
1. public voidonAccuracyChanged(Sensor sensor , int arg1);//当传感器精度变化时调用
2. public voidonSensorChanged(SensorEvent event);//当传感器数据变化时调用
Sensor sensor = event.sensor;//获取监听的传感器
sensor.getType()==Sensor.TYPE_PROXIMITY)判断传感器类型,这里以距离感应器举例,其他的类似
例如:
if(sensor.getType()==Sensor.TYPE_PROXIMITY){
float[] values = event.values;//获取从传感器采集的数据
for(int i=0;i<values.length;i++){
System.out.println(i+" "+values[i]);
}
}
最后不要忘记在不需要传感器数据时关掉数据采集,不然它” 根本停不下来“~~
可以在onDestroy方法中写关闭采集
SensorManager manager=(SensorManager) getSystemService(SENSOR_SERVICE);
manager.unregisterListener(this);//括号里写你的监听事件
下面写一个例子
package com.fenghuo.test;import java.util.List;import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.os.Vibrator;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity implements SensorEventListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SensorManager manager=(SensorManager) getSystemService(SENSOR_SERVICE);List<Sensor> list = manager.getSensorList(Sensor.TYPE_ALL);for(Sensor sensor:list){switch (sensor.getType()) {case Sensor.TYPE_ACCELEROMETER:System.out.println("加速度传感器");break;case Sensor.TYPE_GRAVITY:System.out.println("重力传感器");break;case Sensor.TYPE_AMBIENT_TEMPERATURE:System.out.println("温度传感器");break;case Sensor.TYPE_GYROSCOPE:System.out.println("陀螺仪传感器");break;case Sensor.TYPE_LIGHT:System.out.println("环境光线传感器");break;case Sensor.TYPE_LINEAR_ACCELERATION:System.out.println("线性加速度");break;case Sensor.TYPE_MAGNETIC_FIELD:System.out.println("电磁场传感器");break;case Sensor.TYPE_PRESSURE:System.out.println("压力传感器");break;case Sensor.TYPE_PROXIMITY:System.out.println("距离传感器");break;case Sensor.TYPE_RELATIVE_HUMIDITY:System.out.println("相对湿度传感器");break;case Sensor.TYPE_ROTATION_VECTOR:System.out.println("旋转矢量");break;default:break;}System.out.println(sensor.getName()+" "+sensor.getVendor()+" "+sensor.getVersion());}Sensor sensor=manager.getDefaultSensor(Sensor.TYPE_PROXIMITY);//manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubVibrator vibrator=(Vibrator) getSystemService(VIBRATOR_SERVICE);vibrator.vibrate(100);}});}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();SensorManager manager=(SensorManager) getSystemService(SENSOR_SERVICE);manager.unregisterListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) {// TODO Auto-generated method stub}@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubSensor sensor = event.sensor;if(sensor.getType()==Sensor.TYPE_PROXIMITY){float[] values = event.values;for(int i=0;i<values.length;i++){System.out.println(i+" "+values[i]);}}}}<span style="color:#00cccc;"></span>
附:震动效果
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);//获取震动vibrator 实例
vibrator.vibrate(500);//500表示震动时长 单位是毫秒,单次震动100比较好,如果需要要长时间震动,最好让震动1000毫秒然后过100毫秒继续~
需要加入权限<uses-permission android:name="android.permission.VIBRATE"/>
- android的各种传感器
- Android 各种传感器的使用
- Android传感器各种解释
- Android各种传感器总结
- Android中的各种传感器
- 各种android手机所拥有的手机传感器
- android中各种传感器的应用与编程实例
- 3.Android-传感器开发-处理各种传感器配置
- Android的传感器
- android 传感器的使用
- android 所有的传感器
- Android的常用传感器
- android 传感器的实现
- android传感器的使用
- Android的传感器应用
- android传感器的学习
- android 传感器的使用
- Android 传感器的使用
- iOS时间格式
- 是国家和广大科技化工肯定会概括地讲更好的空间规划分局肯定会
- android广播初步----使用广播接收者窃听短信
- 1003
- HDU 4118 Holiday's Accommodation(树形DP)
- android的各种传感器
- input与图片水平对齐
- 博客请你收下我吧
- linux负载
- 环境变量
- 用C为LUA写一个超迷你的模板引擎.
- 安装10g遇到新问题
- 感受如何啊虽然他很讨人世博热好悲伤
- 熊熊雷火的实验博