微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Android嵌入式平台传感器应用开发水平仪

基于Android嵌入式平台传感器应用开发水平仪

时间:04-16 来源:互联网 点击:

ew)findViewById(R。id。mainView);

mySensorManager=SensorManagerSimulator。getSystemService(this,SENSOR_SERVICE);//测试时

mySensorManager。connectSimulator();//测试时

//mySensorManager=(SensorManager)

//getSystemService(SENSOR_SERVICE);//真机

}

privatefinalSensorListenermSensorLisener=newSensorListener(){//传感器监听

//器类

…//该处省略了部分代码,将在后面进行介绍

};

@Override

protectedvoidonResume(){//添加监听

mySensorManager。registerListener(mSensorLisener,SensorManager。SENSOR_ORIENTATION);

super。onResume();

}

@Override

protectedvoidonPause(){//取消监听

mySensorManager。unregisterListener(mSensorLisener);

super。onPause();

}

}

上述代码中除了重写了onCreate方法外,还重写了onRe-sume以及onPause方法为mySensorManager添加或删除监听,并且定义了传感器监听器类mSensorLisener。

在完成了Activity类代码框架的开发后就可以对其中传感器的监听类进行开发,首先给出监听器类的代码框架:

privatefinalSensorListenermSensorLisener=

newSensorListener(){//传感器监听器类

publicvoidonSensorChanged(intsensor,float[]values){…//该处省略了部分代码,将在后面进行介绍

}

@Override

publicvoidonAccuracyChanged(intsensor,intaccuracy){}

publicbooleanisContain(intx,inty){//判断点是否在圆内

inttempx=(int)(x+mv。zhongBitmap2。getWidth()/2。0);

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

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)){//不在圆内returnfalse;

}else{//在圆内时

returntrue;

}

}

};

在传感器监听类中,onSensorChanged方法用于监听传感器采样值的变化,例如手机姿态的改变等。上述代码中的is-Contain方法用于判断界面中间的气泡是否出界,若出界则返回false。

完成了代码框架的开发后,便可以对传感器的监听方法onSensorChanged进行开发了,其详细代码如下:

publicvoidonSensorChanged(intsensor,float[]values){

if(sensor==SensorManager。SENSOR_ORIENTATION){

doublepitch=values[SensorManager。DATA_Y];

doubleroll=values[SensorManager。DATA_Z];

intx=0;inty=0;//临时变量,算中间水泡坐标时用

inttempX=0;inttempY=0;//下面气泡的临时变量

//开始调整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();

}

//开始调整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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top