傳感器的介紹

今天面試情龄,突然有需求是通過記錄步數(shù)來達(dá)到領(lǐng)取優(yōu)惠劵的目的(計(jì)步傳感器),頓時(shí)我就懵比了捍壤,雖然會(huì)點(diǎn)骤视,之前項(xiàng)目中很少用到。我現(xiàn)在就帶領(lǐng)大家了解了解白群,有不對(duì)的地方多多指教尚胞。

記住在學(xué)習(xí)中硬霍,難免會(huì)碰到一些困難帜慢,給我們帶來煩惱。成績(jī)較差唯卖,雖然自己努力了粱玲,卻總不見效;練習(xí)立定跳遠(yuǎn)拜轨,卻總是跳不過那根優(yōu)秀線……這樣的例子有很多抽减。當(dāng)我們遇到這些困難時(shí),該擁用怎樣的心態(tài)橄碾?我們“班務(wù)欄”里“班級(jí)目標(biāo)”后寫著一句話:“每天進(jìn)步一點(diǎn)”卵沉。我們就是要抱著這種良好的心態(tài),努力學(xué)習(xí)法牲,爭(zhēng)取每天進(jìn)步一點(diǎn)史汗。

傳感器的使用

1.加速度傳感器

2.磁場(chǎng)傳感器

3.方向傳感器

4.陀螺儀傳感器

5.重力傳感器

6.線性加速度傳感器

7.溫度傳感器

8.光線傳感器

9.距離傳感器

10.壓力傳感器

11.計(jì)步傳感器

1. 首先先查看測(cè)試的安卓機(jī)擁有的傳感器

這里先初始化一個(gè)SensorManager的對(duì)象,然后把所有支持的sensor類型log日志打印出來看看拒垃。

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

下面為大家一一介紹

1.加速度傳感器

在這這之前先了解一下手機(jī)傳感器世界的三維坐標(biāo)

image

首先先創(chuàng)建3個(gè)textView來顯示三個(gè)方向上的加速度停撞。

先給Activity實(shí)現(xiàn)SensorEventListener接口,后面要不斷要監(jiān)聽來刷新數(shù)據(jù)

 public class MainActivity extends AppCompatActivity implements 
 SensorEventListener {
 然后創(chuàng)建SensorManager對(duì)象悼瓮,如果前面設(shè)置過就不用設(shè)置戈毒,然后為它注冊(cè)加速度傳感器監(jiān)
聽器,采樣頻率可以自己設(shè)置横堡,一般越高越精準(zhǔn)但是越耗電
private SensorManager sm;
//創(chuàng)建一個(gè)SensorManager來獲取系統(tǒng)的傳感器服務(wù)
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
/*
* 最常用的一個(gè)方法 注冊(cè)事件
* 參數(shù)1 :SensorEventListener監(jiān)聽器
 * 參數(shù)2 :Sensor 一個(gè)服務(wù)可能有多個(gè)Sensor實(shí)現(xiàn)埋市,此處調(diào)用getDefaultSensor獲取默認(rèn)的
Sensor
 * 參數(shù)3 :模式 可選數(shù)據(jù)變化的刷新頻率,多少微秒取一次命贴。
 * */
 //加速度傳感器
 sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
  SensorManager.SENSOR_DELAY_NORMAL);
  接下來我們只要監(jiān)聽這個(gè)傳感器值的變化道宅,然后更新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

結(jié)果:可以看到放在桌子上的時(shí)候x和y軸的加速度幾乎為0腊满,我手機(jī)不太平,而z軸的加速度接近9.8
在activity變?yōu)椴豢梢姷臅r(shí)候培己,傳感器依然在工作碳蛋,這樣很耗電,所以我們根據(jù)需求可以在onPause方法里面停掉傳感器的工作

@Override
public void onPause() {
sm.unregisterListener(this);
super.onPause();
}
2.磁場(chǎng)傳感器

和加速度計(jì)一樣省咨,為sensormanager監(jiān)聽磁場(chǎng)變化即可肃弟,吧手機(jī)放在電腦旁邊時(shí)候可以清楚看到數(shù)值的變化

 // 為磁場(chǎng)傳感器注冊(cè)監(jiān)聽器
 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軸的磁場(chǎng)強(qiáng)度\n"+ X_lateral );
mtextView2.setText("y軸的磁場(chǎng)強(qiáng)度\n"+ Y_longitudinal );
mtextView3.setText("z軸的磁場(chǎng)強(qiáng)度\n"+ Z_vertical );
 }
image

3.方向傳感器

這個(gè)可以用來做指南針之類的,繞z軸轉(zhuǎn)過的角度為0時(shí)大概指向正北零蓉。這個(gè)TYPE_ORIENTATION接口不夠精確已經(jīng)過時(shí)了笤受,可以使用旋轉(zhuǎn)矩陣來代替。這里繞z軸轉(zhuǎn)過的角度是value[0],

詳情看這個(gè)博客點(diǎn)擊打開鏈接

// 為方向傳感器注冊(cè)監(jiān)聽器
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軸轉(zhuǎn)過的角度\n"+ X_lateral );
mtextView5.setText("繞x軸轉(zhuǎn)過的角度\n"+ Y_longitudinal );
mtextView6.setText("繞y軸轉(zhuǎn)過的角度\n"+ Z_vertical );
}

4.陀螺儀傳感器

// 為陀螺儀傳感器注冊(cè)監(jiān)聽器
sm.registerListener(this, 
sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE), 
 SensorManager.SENSOR_DELAY_NORMAL);
 else if(sensorEvent.sensor.getType() == 
 Sensor.TYPE_GYROSCOPE){
//需要將弧度轉(zhuǎn)為角度
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軸轉(zhuǎn)過的角速度\n"+ X );
mtextView8.setText("繞y軸轉(zhuǎn)過的角速度\n"+ Y );
mtextView9.setText("繞z軸轉(zhuǎn)過的角速度\n"+ Z );

5.重力傳感器
就是把重力加速度分解到xyz三個(gè)方向上

// 為重力傳感器注冊(cè)監(jiān)聽器
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.線性加速度傳感器
就是去掉重力加速度后各個(gè)方向的加速度

// 為線性加速度傳感器注冊(cè)監(jiān)聽器
 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 );

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敌蜂,一起剝皮案震驚了整個(gè)濱河市箩兽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌章喉,老刑警劉巖汗贫,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秸脱,居然都是意外死亡落包,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門摊唇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咐蝇,“玉大人,你說我怎么就攤上這事巷查∮行颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵岛请,是天一觀的道長(zhǎng)旭寿。 經(jīng)常有香客問我,道長(zhǎng)髓需,這世上最難降的妖魔是什么许师? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮僚匆,結(jié)果婚禮上微渠,老公的妹妹穿的比我還像新娘。我一直安慰自己咧擂,他們只是感情好逞盆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著松申,像睡著了一般云芦。 火紅的嫁衣襯著肌膚如雪俯逾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天舅逸,我揣著相機(jī)與錄音桌肴,去河邊找鬼。 笑死琉历,一個(gè)胖子當(dāng)著我的面吹牛坠七,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旗笔,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼彪置,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蝇恶?” 一聲冷哼從身側(cè)響起拳魁,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撮弧,沒想到半個(gè)月后潘懊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡想虎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年卦尊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叛拷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舌厨。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忿薇,靈堂內(nèi)的尸體忽然破棺而出裙椭,到底是詐尸還是另有隱情,我是刑警寧澤署浩,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布揉燃,位于F島的核電站,受9級(jí)特大地震影響筋栋,放射性物質(zhì)發(fā)生泄漏炊汤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一弊攘、第九天 我趴在偏房一處隱蔽的房頂上張望抢腐。 院中可真熱鬧,春花似錦襟交、人聲如沸迈倍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啼染。三九已至宴合,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迹鹅,已是汗流浹背卦洽。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斜棚,地道東北人逐样。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像打肝,于是被迫代替她去往敵國(guó)和親脂新。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • refs: https://developer.android.google.cn/guide/topics/se...
    richy_閱讀 41,149評(píng)論 5 31
  • 1.傳感器的定義:傳感器是一種感應(yīng)粗梭、檢測(cè)裝置 2.傳感器的作用:用于檢測(cè)争便、感應(yīng)設(shè)備的周邊信息;不用類型的傳感器断医,檢...
    archyly閱讀 1,643評(píng)論 0 3
  • Android 傳感器開發(fā)詳解 傳感器 傳感器的分類 方向傳感器 陀螺儀傳感器 磁場(chǎng)傳感器 重力傳感器 線性加速度...
    CarlosLynn閱讀 4,485評(píng)論 2 2
  • Android系統(tǒng)提供了對(duì)傳感器的支持滞乙,如果手機(jī)設(shè)備的硬件提供了這些傳感器,Android應(yīng)用可以通過傳感器來獲取...
    trampcr閱讀 4,332評(píng)論 3 12
  • 又逢周末鉴嗤,天氣卻不好斩启,霧霾橙色預(yù)警。女兒寫作業(yè)醉锅,我做美食兔簇,各司其職。今天做了三樣硬耍,蒸小南瓜+貓耳面+小麻花垄琐。 第一...
    bluesky_afcc閱讀 788評(píng)論 2 31