在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Android嵌入式平臺傳感器應(yīng)用開發(fā)水平儀

            基于Android嵌入式平臺傳感器應(yīng)用開發(fā)水平儀

            作者: 時間:2012-04-16 來源:網(wǎng)絡(luò) 收藏

            inttempy=(int)(y+mv。zhongBitmap2。getWidth()/2。0);

            本文引用地址:http://www.biyoush.com/article/149233.htm

            intox=(int)(mv。zhong1_X+mv。zhongBitmap1。getWidth()/2。0);

            intoy=(int)(mv。zhong1_X+mv。zhongBitmap1。getWidth()/2。0);

            if(Math。sqrt((tempx-ox)*(tempx-ox)+(tempy-oy)*(tempy-oy))>(mv。zhongBitmap1。getWidth()/2。0-mv。zhongBitmap2。getWidth()/2。0)){//不在圓內(nèi)returnfalse;

            }else{//在圓內(nèi)時

            returntrue;

            }

            }

            };

            監(jiān)聽類中,onSensorChanged方法用于監(jiān)聽采樣值的變化,例如手機(jī)姿態(tài)的改變等。上述代碼中的is-Contain方法用于判斷界面中間的氣泡是否出界,若出界則返回false。

            完成了代碼框架的開發(fā)后,便可以對的監(jiān)聽方法onSensorChanged進(jìn)行開發(fā)了,其詳細(xì)代碼如下:

            publicvoidonSensorChanged(intsensor,float[]values){

            if(sensor==SensorManager。SENSOR_ORIENTATION){

            doublepitch=values[SensorManager。DATA_Y];

            doubleroll=values[SensorManager。DATA_Z];

            intx=0;inty=0;//臨時變量,算中間水泡坐標(biāo)時用

            inttempX=0;inttempY=0;//下面氣泡的臨時變量

            //開始調(diào)整x的值

            if(Math。abs(roll)=k){

            mv。shang2_X=mv。shang1_X//上面的

            +(int)(((mv。shangBitmap1。getWidth()

            -mv。shangBitmap2。getWidth())/2。0)

            -(((mv。shangBitmap1。getWidth()

            -mv。shangBitmap2。getWidth())/2。0)*roll)/k);

            x=mv。zhong1_X//中間的

            +(int)(((mv。zhongBitmap1。getWidth()

            -mv。zhongBitmap2。getWidth())/2。0)

            -(((mv。zhongBitmap1。getWidth()

            -mv。zhongBitmap2。getWidth())/2。0)*roll)/k);

            }elseif(roll>k){

            mv。shang2_X=mv。shang1_X;x=mv。zhong1_X;

            }else{

            mv。shang2_X=mv。shang1_X+

            mv。shangBitmap1。getWidth()

            -mv。shangBitmap2。getWidth();

            x=mv。zhong1_X+mv。zhongBitmap1。getWidth()

            -mv。zhongBitmap2。getWidth();

            }

            //開始調(diào)整y的值

            if(Math。abs(pitch)=k){

            mv。zuo2_Y=mv。zuo1_Y//左面的

            +(int)(((mv。zuoBitmap1。getHeight()

            -mv。zuoBitmap2。getHeight())/2。0)

            +(((mv。zuoBitmap1。getHeight()

            -mv。zuoBitmap2。getHeight())/2。0)*pitch)/k);

            y=mv。zhong1_Y+//中間的

            (int)(((mv。zhongBitmap1。getHeight()

            -mv。zhongBitmap2。getHeight())/2。0)

            +(((mv。zhongBitmap1。getHeight()

            -mv。zhongBitmap2。getHeight())/2。0)*pitch)/k);

            }elseif(pitch>k){

            mv。zuo2_Y=mv。zuo1_Y

            +mv。zuoBitmap1。getHeight()

            -mv。zuoBitmap2。getHeight();

            y=mv。zhong1_Y+mv。zhongBitmap1。getHeight()

            -mv。zhongBitmap2。getHeight();

            }else{

            mv。zuo2_Y=mv。zuo1_Y;y=mv。zhong1_Y;

            }

            //下面的

            tempX=-(int)(((mv。xiaBitmap1。getWidth()/2-28)*roll

            +(mv。xiaBitmap1。getWidth()/2-28)*pitch)/k);

            tempY=-(int)((-(mv。xiaBitmap1。getWidth()/2-28)*roll

            -(mv。xiaBitmap1。getWidth()/2-28)*pitch)/k);

            //限制下面的氣泡范圍

            if(tempY>mv。xiaBitmap1。getHeight()/2-28){

            tempY=mv。xiaBitmap1。getHeight()/2-28;

            }

            if(tempY-mv。xiaBitmap1。getHeight()/2+28){

            tempY=-mv。xiaBitmap1。getHeight()/2+28;

            }

            if(tempX>mv。xiaBitmap1。getWidth()/2-28){

            tempX=mv。xiaBitmap1。getWidth()/2-28;

            }

            if(tempX-mv。xiaBitmap1。getWidth()/2+28){

            tempX=-mv。xiaBitmap1。getWidth()/2+28;

            }

            mv。xia2_X=tempX+mv。xia1_X

            +mv。xiaBitmap1。getWidth()/2

            -mv。xiaBitmap2。getWidth()/2;

            mv。xia2_Y=tempY+mv。xia1_Y

            +mv。xiaBitmap1。getHeight()/2

            -mv。xiaBitmap2。getWidth()/2;

            if(isContain(x,y)){//中間的水泡在圓內(nèi)才改變坐標(biāo)

            mv。zhong2_X=x;mv。zhong2_Y=y;

            }

            mv。postInvalidate();//重繪MainView

            }

            }

            在onSensorChanged方法中首先得到pitch軸以及roll軸的數(shù)值,然后根據(jù)該數(shù)值的大小調(diào)整水泡在屏幕中的位置,同時需要對水泡的坐標(biāo)進(jìn)行判斷,使其保持在自身所在外框的范圍內(nèi)。

            此時運行該程序,并保證測試工具Sensorsimulator與模擬器的連通,便會觀察到如圖1所示的效果,通過Sensorsimulator工具模擬手機(jī)的姿態(tài)的改變,屏幕中的水泡便隨之向高處運動。

            8程序發(fā)布

            完成了所有代碼的開發(fā)后,就可以將應(yīng)用程序打包發(fā)布了。本案例中只需將Eclipse工具自動生成的apk文件拷出即可,按如下步驟操作。

            (1)進(jìn)行正式發(fā)布之前首先需要將代碼中注釋為測試時使用的兩處代碼刪掉,并將注釋為真機(jī)使用代碼的注釋去掉。

            (2)完成代碼的修改后重新構(gòu)建項目。

            (3)打開項目文件夾下的bin目錄,其中名為SPY的apk文件便為本應(yīng)用程序的安裝包。

            (4)將SPY。apk文件拷貝到支持傳感器的手機(jī)中運行即可完成本應(yīng)用程序的安裝。

            9結(jié)語

            通過開發(fā)的傳感器應(yīng)用---儀程序,讀者應(yīng)該對Android程序的開發(fā)有了一定的了解,同時讀者也應(yīng)該了解到在Android下使用傳感器來豐富自己軟件的功能是十分方便的。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉