传感器的介绍

今天面试,突然有需求是通过记录步数来达到领取优惠劵的目的(计步传感器),顿时我就懵比了,虽然会点,之前项目中很少用到。我现在就带领大家了解了解,有不对的地方多多指教。

记住在学习中,难免会碰到一些困难,给我们带来烦恼。成绩较差,虽然自己努力了,却总不见效;练习立定跳远,却总是跳不过那根优秀线……这样的例子有很多。当我们遇到这些困难时,该拥用怎样的心态?我们“班务栏”里“班级目标”后写着一句话:“每天进步一点”。我们就是要抱着这种良好的心态,努力学习,争取每天进步一点。

传感器的使用

1.加速度传感器

2.磁场传感器

3.方向传感器

4.陀螺仪传感器

5.重力传感器

6.线性加速度传感器

7.温度传感器

8.光线传感器

9.距离传感器

10.压力传感器

11.计步传感器

1. 首先先查看测试的安卓机拥有的传感器

这里先初始化一个SensorManager的对象,然后把所有支持的sensor类型log日志打印出来看看。

SensorManager mSensorManager;
List<Sensor> sensorList;
// 实例化传感器管理者
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 得到设置支持的所有传感器的List
sensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
List<String> sensorNameList = new ArrayList<String>();
for (Sensor sensor : sensorList) {
Log.d(TAG, "onResume: "+sensor.getName());
}

下面为大家一一介绍

1.加速度传感器

在这这之前先了解一下手机传感器世界的三维坐标

image

首先先创建3个textView来显示三个方向上的加速度。

先给Activity实现SensorEventListener接口,后面要不断要监听来刷新数据

 public class MainActivity extends AppCompatActivity implements 
 SensorEventListener {
 然后创建SensorManager对象,如果前面设置过就不用设置,然后为它注册加速度传感器监
听器,采样频率可以自己设置,一般越高越精准但是越耗电
private SensorManager sm;
//创建一个SensorManager来获取系统的传感器服务
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
/*
* 最常用的一个方法 注册事件
* 参数1 :SensorEventListener监听器
 * 参数2 :Sensor 一个服务可能有多个Sensor实现,此处调用getDefaultSensor获取默认的
Sensor
 * 参数3 :模式 可选数据变化的刷新频率,多少微秒取一次。
 * */
 //加速度传感器
 sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
  SensorManager.SENSOR_DELAY_NORMAL);
  接下来我们只要监听这个传感器值的变化,然后更新textView的值就好了
 @Override
 public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
    float X_lateral = sensorEvent.values[0];
    float Y_longitudinal = sensorEvent.values[1];
    float Z_vertical = sensorEvent.values[2];
    mtextViewx.setText(X_lateral + "");
    mtextViewy.setText(Y_longitudinal + "");
    mtextViewz.setText(Z_vertical + "");
}

}


image

结果:可以看到放在桌子上的时候x和y轴的加速度几乎为0,我手机不太平,而z轴的加速度接近9.8
在activity变为不可见的时候,传感器依然在工作,这样很耗电,所以我们根据需求可以在onPause方法里面停掉传感器的工作

@Override
public void onPause() {
sm.unregisterListener(this);
super.onPause();
}
2.磁场传感器

和加速度计一样,为sensormanager监听磁场变化即可,吧手机放在电脑旁边时候可以清楚看到数值的变化

 // 为磁场传感器注册监听器
 sm.registerListener(this, 
 sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), 
 SensorManager.SENSOR_DELAY_NORMAL);
 else if(sensorEvent.sensor.getType() == 
 Sensor.TYPE_MAGNETIC_FIELD){
float X_lateral = sensorEvent.values[0];
float Y_longitudinal = sensorEvent.values[1];
float Z_vertical = sensorEvent.values[2];
mtextView1.setText("x轴的磁场强度\n"+ X_lateral );
mtextView2.setText("y轴的磁场强度\n"+ Y_longitudinal );
mtextView3.setText("z轴的磁场强度\n"+ Z_vertical );
 }
image

3.方向传感器

这个可以用来做指南针之类的,绕z轴转过的角度为0时大概指向正北。这个TYPE_ORIENTATION接口不够精确已经过时了,可以使用旋转矩阵来代替。这里绕z轴转过的角度是value[0],

详情看这个博客点击打开链接

// 为方向传感器注册监听器
sm.registerListener(this, 
sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
SensorManager.SENSOR_DELAY_NORMAL);
else if(sensorEvent.sensor.getType() == 
Sensor.TYPE_ORIENTATION){
float X_lateral = sensorEvent.values[0];
float Y_longitudinal = sensorEvent.values[1];
float Z_vertical = sensorEvent.values[2];
mtextView4.setText("绕z轴转过的角度\n"+ X_lateral );
mtextView5.setText("绕x轴转过的角度\n"+ Y_longitudinal );
mtextView6.setText("绕y轴转过的角度\n"+ Z_vertical );
}

4.陀螺仪传感器

// 为陀螺仪传感器注册监听器
sm.registerListener(this, 
sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE), 
 SensorManager.SENSOR_DELAY_NORMAL);
 else if(sensorEvent.sensor.getType() == 
 Sensor.TYPE_GYROSCOPE){
//需要将弧度转为角度
float X = (float)Math.toDegrees(sensorEvent.values[0]);
float Y = (float)Math.toDegrees(sensorEvent.values[1]);
float Z = (float)Math.toDegrees(sensorEvent.values[2]);
mtextView7.setText("绕x轴转过的角速度\n"+ X );
mtextView8.setText("绕y轴转过的角速度\n"+ Y );
mtextView9.setText("绕z轴转过的角速度\n"+ Z );

5.重力传感器
就是把重力加速度分解到xyz三个方向上

// 为重力传感器注册监听器
sm.registerListener(this, 
sm.getDefaultSensor(Sensor.TYPE_GRAVITY), 
SensorManager.SENSOR_DELAY_NORMAL);
else if(sensorEvent.sensor.getType() == Sensor.TYPE_GRAVITY){
float X = sensorEvent.values[0];
float Y = sensorEvent.values[1];
float Z = sensorEvent.values[2];
mtextViewgx.setText("x方向的重力加速度\n"+ X );
mtextViewgy.setText("Y方向的重力加速度\n"+ Y );
mtextViewgz.setText("Z方向的重力加速度\n"+ Z );

6.线性加速度传感器
就是去掉重力加速度后各个方向的加速度

// 为线性加速度传感器注册监听器
 sm.registerListener(this, 
 sm.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION), 
 SensorManager.SENSOR_DELAY_NORMAL);
else if(sensorEvent.sensor.getType() == 
Sensor.TYPE_LINEAR_ACCELERATION){
float X = sensorEvent.values[0];
float Y = sensorEvent.values[1];
float Z = sensorEvent.values[2];
mtextViewlx.setText("x方向的线性加速度\n"+ X );
mtextViewly.setText("Y方向的线性加速度\n"+ Y );
mtextViewlz.setText("Z方向的线性加速度\n"+ Z );

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • refs: https://developer.android.google.cn/guide/topics/se...
    richy_阅读 40,506评论 5 31
  • 1.传感器的定义:传感器是一种感应、检测装置 2.传感器的作用:用于检测、感应设备的周边信息;不用类型的传感器,检...
    archyly阅读 1,609评论 0 3
  • Android 传感器开发详解 传感器 传感器的分类 方向传感器 陀螺仪传感器 磁场传感器 重力传感器 线性加速度...
    CarlosLynn阅读 4,395评论 2 2
  • Android系统提供了对传感器的支持,如果手机设备的硬件提供了这些传感器,Android应用可以通过传感器来获取...
    trampcr阅读 4,271评论 3 12
  • 又逢周末,天气却不好,雾霾橙色预警。女儿写作业,我做美食,各司其职。今天做了三样,蒸小南瓜+猫耳面+小麻花。 第一...
    bluesky_afcc阅读 783评论 2 31