015android初級(jí)篇之傳感器的簡(jiǎn)單使用

android系統(tǒng)中手機(jī)傳感器類型的定義

int     TYPE_ACCELEROMETER     A constant describing an accelerometer sensor type. //三軸加速度感應(yīng)器 返回三個(gè)坐標(biāo)軸的加速度  單位m/s2
int     TYPE_ALL     A constant describing all sensor types.                     //用于列出所有感應(yīng)器
int     TYPE_GRAVITY     A constant describing a gravity sensor type.                //重力感應(yīng)器
int     TYPE_GYROSCOPE     A constant describing a gyroscope sensor type            //陀螺儀 可判斷方向 返回三個(gè)坐標(biāo)軸上的角度
int     TYPE_LIGHT     A constant describing an light sensor type.                 //光線感應(yīng)器 單位 lux 勒克斯
int     TYPE_LINEAR_ACCELERATION     A constant describing a linear acceleration sensor type.  //線性加速度
int     TYPE_MAGNETIC_FIELD     A constant describing a magnetic field sensor type.               //磁場(chǎng)感應(yīng) 返回三個(gè)坐標(biāo)軸的數(shù)值  微特斯拉
int     TYPE_ORIENTATION     This constant is deprecated. use SensorManager.getOrientation() instead. //方向感應(yīng)器 已過時(shí) 可以使用方法獲得
int     TYPE_PRESSURE     A constant describing a pressure sensor type                             //壓力感應(yīng)器  單位 千帕斯卡
int     TYPE_PROXIMITY     A constant describing an proximity sensor type.                          //距離傳感器
int     TYPE_ROTATION_VECTOR     A constant describing a rotation vector sensor type.             //翻轉(zhuǎn)傳感器
int     TYPE_TEMPERATURE     A constant describing a temperature sensor type                  //溫度傳感器 單位 攝氏度

Android監(jiān)聽傳感器事件

要監(jiān)控傳感器的原始數(shù)據(jù)篡殷,你需要實(shí)現(xiàn) SensorEventListener 接口的 onAccuracyChanged() 和onSensorChanged() 回調(diào)方法诅福。只要發(fā)生以下事件,Android系統(tǒng)就會(huì)調(diào)用這兩個(gè)方法:

  1. 傳感器精度發(fā)生變化
    在這種情況下脚猾,系統(tǒng)會(huì)調(diào)用 onAccuracyChanged() 方法鸽嫂,并傳給你一個(gè)發(fā)生變化的 Sensor 對(duì)象的引用和新的傳感器精度值边酒。精度用以下四種狀態(tài)常量之一來表示: SENSOR_STATUS_ACCURACY_LOW僚碎、SENSOR_STATUS_ACCURACY_MEDIUM、 SENSOR_STATUS_ACCURACY_HIGH抠藕、 和 SENSOR_STATUS_UNRELIABLE饿肺。

  2. 傳感器報(bào)送一個(gè)新數(shù)據(jù)
    這種情況下,系統(tǒng)會(huì)調(diào)用 onSensorChanged() 方法盾似,并傳給你一個(gè) SensorEvent 對(duì)象敬辣。 SensorEvent 對(duì)象中包含了新數(shù)據(jù)的相關(guān)信息,包括:數(shù)據(jù)精度颜说、生成數(shù)據(jù)的傳感器购岗、生成數(shù)據(jù)的時(shí)間戳、傳感器采到的新數(shù)據(jù)门粪。

代碼示例

在自定義的類中implements SensorEventListener類類

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener,SensorEventListener喊积。

 mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
獲取傳感器manager對(duì)象,及傳感器對(duì)象玄妈,根據(jù)注冊(cè)的參數(shù)類型乾吻,在回調(diào)函數(shù)中返回事件

疑問:SensorEventListener類的Sensor為什么不能像SensorListener
中注冊(cè)同時(shí)監(jiān)控多個(gè)類型的傳感器??

sm.registerListener(this, 
            Sensor.TYPE_ACCELEROMETER |
            Sensor.TYPE_MAGNETIC_FIELD |
            Sensor.TYPE_ORIENTATION |
            Sensor.TYPE_GYROSCOPE |
            Sensor.TYPE_LIGHT |
            Sensor.TYPE_PRESSURE |
            Sensor.TYPE_TEMPERATURE |
            Sensor.TYPE_PROXIMITY |
            Sensor.TYPE_GRAVITY |
            Sensor.TYPE_LINEAR_ACCELERATION |
            Sensor.TYPE_ROTATION_VECTOR,
            SensorManager.SENSOR_DELAY_NORMAL);

對(duì)于繼承自Activity的類 需要在其生命周期函數(shù)中髓梅,加上對(duì)監(jiān)聽器的管理

    @Override
protected void onResume() {
    super.onResume();
    boolean supported=mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_NORMAL);
    if (!supported) {
        mSensorManager.unregisterListener(this);
        throw new UnsupportedOperationException(
                "Accelerometer not supported");
    }
}

@Override
protected void onPause() {
    super.onPause();
    mSensorManager.unregisterListener(this);
}

 @Override
protected void onStop() {
    mSensorManager.unregisterListener(this);
    super.onStop();
}

同時(shí)實(shí)現(xiàn)與傳感器監(jiān)聽器有關(guān)的兩個(gè)回調(diào)函數(shù),自己的相關(guān)代碼在這里實(shí)現(xiàn):

public void onSensorChanged(SensorEvent event){
    if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) {  
        return;  
    }  
    String str =  "X:" + event.values[0] + "绎签,Y:" + event.values[1] + "枯饿,Z:" + event.values[2];

     a=Math.sqrt(event.values[0]*event.values[0]
                +event.values[1]*event.values[1]
                +event.values[2]*event.values[2]);
    DataPoint[] values = new DataPoint[1];
    values[0] = new DataPoint(x,a);
    x++;
    series.appendData(values[0], true, 300);

}

@Override
public void onAccuracyChanged(Sensor sensor,int accuracy){

}

參考鏈接

  1. Android-傳感器開發(fā)-監(jiān)聽傳感器事件
  2. android 獲取所有傳感器數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诡必,隨后出現(xiàn)的幾起案子奢方,更是在濱河造成了極大的恐慌,老刑警劉巖爸舒,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟋字,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡扭勉,警方通過查閱死者的電腦和手機(jī)鹊奖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涂炎,“玉大人忠聚,你說我怎么就攤上這事〕罚” “怎么了两蟀?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)震缭。 經(jīng)常有香客問我垫竞,道長(zhǎng),這世上最難降的妖魔是什么蛀序? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮活烙,結(jié)果婚禮上徐裸,老公的妹妹穿的比我還像新娘。我一直安慰自己啸盏,他們只是感情好重贺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著回懦,像睡著了一般气笙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怯晕,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天潜圃,我揣著相機(jī)與錄音,去河邊找鬼舟茶。 笑死谭期,一個(gè)胖子當(dāng)著我的面吹牛堵第,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播隧出,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踏志,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了胀瞪?” 一聲冷哼從身側(cè)響起针余,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凄诞,沒想到半個(gè)月后圆雁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡幔摸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年摸柄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既忆。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡驱负,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出患雇,到底是詐尸還是另有隱情跃脊,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布苛吱,位于F島的核電站酪术,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翠储。R本人自食惡果不足惜绘雁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望援所。 院中可真熱鬧庐舟,春花似錦、人聲如沸住拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滔岳。三九已至杠娱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谱煤,已是汗流浹背摊求。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刘离,地道東北人睹簇。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓奏赘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親太惠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子磨淌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評(píng)論 25 707
  • 傳感器 傳感器Sensor是一種檢測(cè)裝置,能感受到被測(cè)量的信息凿渊,并能將感受到的信息梁只,按一定規(guī)律變換成為電信號(hào)或其他...
    Reathin閱讀 6,331評(píng)論 0 5
  • Android傳感器定義 Android 傳感器相關(guān)術(shù)語微機(jī)電傳感器(MEMS)MEMS 通常制作在規(guī)格很小的硅芯...
    Jannonx閱讀 4,353評(píng)論 0 1
  • 越來越習(xí)慣每天這個(gè)點(diǎn),相約簡(jiǎn)書了埃脏。剛開始就認(rèn)為是老師布置的一種作業(yè)搪锣,一個(gè)月下來,這已經(jīng)成為了一種習(xí)慣彩掐,一種享受构舟,喜...
    琪子?jì)?/span>閱讀 172評(píng)論 1 3
  • spring4介紹 spring配置詳解 IOC(控制反轉(zhuǎn)) 與 DI(依賴注入)重點(diǎn) 依賴注入各種類型const...
    帥哥_刷哥閱讀 844評(píng)論 0 3