亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android智能手機(jī)的方向傳感器應(yīng)用開發(fā)

        2018-01-29 12:56:46陳三清張靖
        無線互聯(lián)科技 2017年18期
        關(guān)鍵詞:指南針

        陳三清+張靖

        摘要:傳感器的應(yīng)用是智能手機(jī)的一大亮點(diǎn),方向傳感器在Android手機(jī)上有著重要的應(yīng)用。文章首先介紹了Android傳感器系統(tǒng)架構(gòu)和方向傳感器的特點(diǎn),然后論述了Android方向傳感器應(yīng)用開發(fā)的要素,如傳感器應(yīng)用開發(fā)主要的類和接口及方向傳感器定位的基本原理,重點(diǎn)講述了簡易指南針程序的開發(fā)步驟及要點(diǎn),最后給出了程序測試的結(jié)果。

        關(guān)鍵詞:Android;方向傳感器;指南針

        隨著智能手機(jī)的廣泛使用,基于智能手機(jī)的應(yīng)用也層出不窮,許多基于手機(jī)硬件或傳感器芯片的手機(jī)APP受到了人們的熱愛和追捧。比如基于GPS芯片的定位與地圖服務(wù)幾乎就是智能手機(jī)的標(biāo)準(zhǔn)功能,基于光線傳感器的智能手機(jī)是隨環(huán)境光線強(qiáng)弱自動改變屏幕亮度的,而基于陀螺儀傳感器的無人機(jī)飛控APP,基于加速傳感器的人體計(jì)步器APP,基于方向傳感器的手機(jī)游戲應(yīng)用等是當(dāng)前Andrmd應(yīng)用開發(fā)的熱門方向。本文專門針對Android方向傳感器特點(diǎn)進(jìn)行分析,在此基礎(chǔ)上開發(fā)應(yīng)用程序。

        1Android傳感器基礎(chǔ)

        1.1Android傳感器系統(tǒng)架構(gòu)

        現(xiàn)在的智能手機(jī)不僅是信息的載體,也是許多傳感器設(shè)備的載體,像重力傳感器、磁場傳感器、光線傳感器、陀螺儀傳感器等傳感設(shè)備極大地增強(qiáng)了智能手機(jī)的用戶體驗(yàn)[1]。一般傳感器系統(tǒng)會主動對上層報(bào)告?zhèn)鞲衅骶群蛿?shù)

        據(jù)的變化,并且提供了設(shè)置傳感器精度的接口,這些接口可以在Java應(yīng)用和Java框架中使用。Android平臺下傳感器系統(tǒng)的基本層次結(jié)構(gòu)[2]如圖1所示。

        Android傳感器系統(tǒng)架構(gòu)從上到下依次是Java應(yīng)用層、Java對傳感器的應(yīng)用開發(fā)框架層、傳感器硬件抽象層及傳感器硬件層,其中Sensor的Java類屬于應(yīng)用開發(fā)框架層,此部分對應(yīng)的實(shí)現(xiàn)文件是Sensor*Java;傳感器系統(tǒng)的JNI部分提供了對類Android.hardware.Sensor.Manage的本地支持,在Andrmd平臺下基于傳感器的應(yīng)用程序開發(fā)一般要使用應(yīng)用開發(fā)層的相關(guān)的類和接口。

        1.2Android方向傳感器的特點(diǎn)

        方向傳感器(Sensor.TYPE_ORIENTATION)又稱姿態(tài)傳感器,方向傳感器通過對力每I感的傳感器,感受手機(jī)等設(shè)備在變換姿勢時(shí)重心變化,使手機(jī)等設(shè)備光標(biāo)變化位置,從而實(shí)現(xiàn)選擇的功能。方向傳感器是Android平臺提供的用于判別設(shè)備位置的傳感器之一,事實(shí)上,磁場傳感器屬于硬件傳感器,方向傳感器屬于軟件傳感器,其數(shù)據(jù)是通過加速度傳感器和磁場傳感器共同獲得的,通過方向傳感器獲取的數(shù)據(jù)可以方便快捷地進(jìn)行數(shù)據(jù)應(yīng)用和展示。

        2Android方向傳感器應(yīng)用開發(fā)的要素

        2.1ASF簡介

        所謂ASF就是AndroidSDK提供的Androidsensorframework(Android傳感器框架),其作用是用來訪問當(dāng)前Android設(shè)備內(nèi)置的傳感器,幫助完成各種與傳感器有關(guān)的任務(wù)。例如:確定當(dāng)前Android手機(jī)支持什么類型的傳感器,支持的傳感器硬件信息以及測量范圍、精度等方面的信息;獲取傳感器傳回來的數(shù)據(jù)以及定義傳感器回傳的數(shù)據(jù)的精度;注冊和注銷傳感器事件監(jiān)聽器,這些監(jiān)聽器用于監(jiān)聽傳感器的變化,通常從傳感器回傳的數(shù)據(jù)需要利用這些監(jiān)聽器完成。

        2.2ASF的主要類和接口

        Andrcnd傳感器應(yīng)用開發(fā)一般要用到下面的類和接口[3]。

        2.2.1SensorManager類

        SensorManager類是系統(tǒng)中所有傳感器的管理類,通過該類實(shí)例獲得對傳感器的管理服務(wù),包括訪問和列表所有傳感器,注冊和注銷傳感器服務(wù)等。

        2.2.2Sensor類

        Sensor類定義了傳感器服務(wù)的類型,如Sensor.TYPE_GRAVITY定義的是重力傳感器,Sensor.TYPE_TEMPERATURE定義的是溫度傳感器,而Sensor.TYPE_

        ORIENTATION定義的是方向傳感器,在編程時(shí)由此可判斷是何種類型的傳感器傳送的數(shù)據(jù)。

        2.2.3SensorEvent類

        SensorEvent類是對傳感器事件的描述,提供傳感器事件相關(guān)的信息,比如傳感器類型、傳感器數(shù)據(jù)、數(shù)據(jù)精度等等信息。

        2.2.4SensoriEventListener接口

        SensorEventListener接口用于傳感器數(shù)據(jù)對編程開發(fā)者的回調(diào),使用該接口的回調(diào)方法獲得傳感器的數(shù)據(jù)和狀

        2.3方向傳感器定位的基本原理

        方向傳感器屬于位置類傳感器,通過該類傳感器可以感應(yīng)手機(jī)的地理坐標(biāo),并且反饋給用戶。方向傳感器主要通過感應(yīng)手機(jī)方位的變化來捕獲3個(gè)方位的參數(shù),即手機(jī)沿X軸、Y軸和Z軸轉(zhuǎn)過的角度(見圖2)[4-6]。

        然后可以通過Sensor類的size()和getName()方法獲得所支持傳感器總的個(gè)數(shù)及傳感器設(shè)備名稱,或使用getVendor()獲得傳感器供應(yīng)商信息,使用getVersion()取得設(shè)備版本信息等。

        3.2傳感器服務(wù)的注冊

        一般地,傳感器服務(wù)要隨著程序狀態(tài)的變化而變化。在本例中,利用Activity實(shí)現(xiàn)程序界面時(shí),在重寫onResume()方法時(shí),可在其中啟用傳感器服務(wù):

        @Override

        protected void onResume0 {

        super.onResume0;

        List sensorsList = sManager.

        getSensorList(Sensor.TYPE_ ORIENTATION);

        if (sensorsList.size0 > 0) {

        sManager.registerListener(this, sensorsList.get(0),

        SensorManager. SENSOR DELAY_GAME);//注冊方向傳感器,并設(shè)置傳感器采樣方式SENSOR DELAY_GAME}

        為了降低功耗,在退出應(yīng)用或鎖屏等操作時(shí),應(yīng)關(guān)閉傳感器服務(wù),此時(shí)可在Activity處在暫?;蛲V?fàn)顟B(tài)時(shí)注銷服

        務(wù),如下在onPause0方法中注銷傳感器服務(wù):

        @Override

        protected void onPause(){

        super.onPause();

        sManager.unregisterListener(this);

        }

        3.3 SensorEventListener接口的實(shí)現(xiàn)及指向方位旋轉(zhuǎn)的實(shí)現(xiàn)

        要使用傳感器的數(shù)據(jù)及狀態(tài)信息,就必須要實(shí)現(xiàn)SensorEventListener接口,通過其回調(diào)方法的參數(shù)獲得,有兩個(gè)方法:

        public void onAccuracyChanged(Sensor sensor. int

        accuracy);

        public void onSensorChanged(SensorEvent event);

        其中,第一個(gè)方法是傳感器設(shè)備的精度產(chǎn)生變化時(shí)回調(diào):第2個(gè)方法是傳感器設(shè)備的數(shù)據(jù)產(chǎn)生生變化時(shí)回調(diào)。在設(shè)計(jì)本例程序時(shí)只需第2個(gè)方法,通過SensorEvent類的參數(shù)event獲得傳感器狀態(tài)信息和數(shù)據(jù)信息。通過event.values[0]獲得沿Z軸旋轉(zhuǎn)角度,再使對指南針圖片獲得相應(yīng)的旋轉(zhuǎn)角度,以下是實(shí)現(xiàn)的關(guān)鍵代碼[1]:

        @Override

        public void onSensorChanged(SensorEvent event){

        int sensorType=event.sensor.getType();//獲取觸發(fā)

        event的傳感器類型

        switch(sensorType){

        case Sensor.TYPE ORIENTATION:

        tvl.setText(“手機(jī)沿Z軸轉(zhuǎn)過的角度為:”+event.

        values[0]);

        tv2.setText(

        values[l]);

        tv3.setText(

        values[2]);

        “手機(jī)沿Y軸轉(zhuǎn)過的角度為:”+event.

        “手機(jī)沿X軸轉(zhuǎn)過的角度為:”+event.

        float degree=event.values[0];∥獲取z軸轉(zhuǎn)過的角度

        RotateAnimation ra=new RotateAnimation

        (currentDegree:degree,

        Anirnation.RELATIVE__TO_SELF,0.5f,Animation.

        RELATIVE TO_SELF,0.5f);

        //穿件旋轉(zhuǎn)動畫

        ra.setDuration(300);//動畫持續(xù)時(shí)間

        image.startAnimation(ra);

        currentDegree=-degree;

        break;)

        }

        4運(yùn)行結(jié)果及分析

        程序測試運(yùn)行結(jié)果,手機(jī)水平放置時(shí)約“正北”和“正南”時(shí)的情況如圖3—4所示,由于指南針?biāo)璐_定方位的數(shù)據(jù)只需event.values[0],所以只需關(guān)注“手機(jī)沿Z軸轉(zhuǎn)過的角度”;再者設(shè)置傳感器采樣速率較快,顯示數(shù)據(jù)是十分靈敏的,因而截圖顯示的數(shù)值在“標(biāo)準(zhǔn)”數(shù)值附近,不是嚴(yán)格準(zhǔn)確的;event.values[0]的范圍是0?360,故顯示350?359之間的數(shù)值時(shí),也大約處在“正北”的位置,其他情況類似判斷。

        [參考文獻(xiàn)]

        [1]尹邦杰,黃曉瑩.淺析Android手機(jī)傳感器機(jī)制及應(yīng)用設(shè)計(jì)舉例[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013(5):148.

        [2]孫廣宇,張玲玲.Android物聯(lián)網(wǎng)開發(fā)從入門到實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2016.

        [3]REDOWU.如何獲取Android設(shè)備所支持的傳感器種類[EB/OL].(2016-09-12)[2017-09-25]_http://blog.csdn.net/redoq/article/details/52515123.

        [4]張舒.基于Android平臺的無線傳感器應(yīng)用層開發(fā)[D].北京:北京郵電大學(xué),2012.

        [5]田志貢,阮國慶,石峰.手機(jī)游戲開發(fā)中Android傳感器的應(yīng)用研究[J].無線互聯(lián)科技,2015(7):123-124.

        [6]蔡澤江,唐國純.基于Android傳感器技術(shù)的游戲開發(fā)應(yīng)用[J].軟件,2014(9):38-42.endprint

        猜你喜歡
        指南針
        天然的指南針
        指南針與航海
        軍事文摘(2023年2期)2023-02-17 09:22:50
        用針和表就能制成指南針?
        觀展指南針
        汽車觀察(2021年4期)2021-05-10 04:06:36
        看圖寫話有妙招
        指南針的由來
        河北遙感(2014年2期)2014-07-10 13:28:50
        蜜桃视频中文在线观看| 天天做天天添av国产亚洲| 国产精品无码久久综合| 国产在线一区二区三区av| 国产麻豆一精品一AV一免费软件| 亚洲一区二区高清在线| 青青久久精品一本一区人人 | 亚洲精品一区二区高清| 亚洲欧洲成人a∨在线观看| 欧美另类高清zo欧美| 久久国产亚洲精品超碰热| 厕所极品偷拍一区二区三区视频| av在线一区二区三区不卡| 日本强伦姧人妻一区二区| 亚洲精品www久久久| 六月丁香婷婷色狠狠久久| 无码伊人久久大香线蕉| 亚洲中文字幕一区av| av在线免费观看蜜桃| 人妻聚色窝窝人体www一区| 欧美丰满大爆乳波霸奶水多| 蜜桃视频色版在线观看| 国产精品髙潮呻吟久久av| 精品国产三级a∨在线欧美| 成 人免费va视频| 无码日韩人妻AV一区免费| 精品国产乱来一区二区三区| 亚洲国产av一区二区三区天堂| 国产又大又硬又粗| 女女女女bbbbbb毛片在线| 少妇bbwbbw高潮| 午夜蜜桃视频在线观看| 狠狠色丁香婷婷综合潮喷| 亚洲欧美在线观看| 亚洲精品AⅤ无码精品丝袜无码| 色婷婷久色国产成人免费| 亚洲综合精品中文字幕| 蜜桃无码一区二区三区| 亚洲a级片在线观看| 亚洲男人在线天堂av| 亚洲精品1区2区在线观看|