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

时间:2012-04-16来源:网络

//绘制左面方框中的刻度

canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2-7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2-7,paint);canvas。drawLine(zuo1_X,zuo1_Y+zuoBitmap1。getHeight()/2+7,zuo1_X+zuoBitmap1。getWidth()-2,zuo1_Y+zuoBitmap1。getHeight()/2+7,paint);

//绘制下面方框中的刻度

canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-10,xia1_Y+xiaBitmap1。getHeight()/2-20,xia1_X+xiaBitmap1。getWidth()/2+20,xia1_Y+xiaBitmap1。getHeight()/2+10,paint);

canvas。drawLine(xia1_X+xiaBitmap1。getWidth()/2-20,xia1_Y+xiaBitmap1。getHeight()/2-10,xia1_X+xiaBitmap1。getWidth()/2+10,xia1_Y+xiaBitmap1。getHeight()/2+20,paint);

//中间圆圈中的刻度(小圆)

RectFoval=newRectF(zhong1_X+zhongBitmap1。getWidth()/2-10,zhong1_Y+zhongBitmap1。getHeight()/2-10,zhong1_X+zhongBitmap1。getWidth()/2+10,zhong1_Y+zhongBitmap1。getHeight()/2+10);

canvas。drawOval(oval,paint);//绘制基准线(圆)

}

在该方法中,根据相应图片的X、Y坐标将图片绘制到屏幕中,在图片的绘制过程中,同样动态根据相应图片的宽和高计算需要绘制到的位置坐标,以提高程序的可维护性与灵活性。

6相关XML文件的编写

完成了用于显示水平仪界面的自定义View的Java代码开发之后,就应该对布局XML资源文件进行编写,以将之前开发的自定义View添加到用户界面中。打开项目中res/layout目录下的main。xml,在其中编写如下的xml代码:

?xmlversion=1。0encoding=utf-8?>!--编码格式-->

android:orientation=vertical

android:layout_width=fill_parent

android:layout_height=fill_parent>!--线性布局-->

android:id=@+id/mainView

android:layout_width=fill_parent

android:layout_height=fill_parent/>!--自定义

View-->

/LinearLayout>

编写完布局文件main。xml后,还需要开发字符串资源文件strings。xml。打开res/values下的strings。xml文件,编写如下的代码:

?xmlversion=1。0encoding=utf-8?>!--编码方式-->

水平仪

在该文件中只是对字符串app_name进行了定义,在开发Android应用程序时,将字符串资源统一定义到一个xml文件中是一个很好的编程习惯。

编写完上述的xml资源文件后,为了调试还需要为此应用程序添加网络权限,打开项目根目录下的AndroidManifest。xml文件,在标签之前加入下列代码:

上述代码的功能为此应用程序添加了访问网络的权限。

7Activity类的开发

完成了自定义View以及XML文件的开发后,就可以对用户界面对应的Activity类进行开发,首先开发该类的代码框架,其代码如下:

packagewyf。ytl;//声明所在包

importandroid。app。Activity;//引入相关类

importandroid。hardware。SensorListener;

importandroid。hardware。SensorManager;

importandroid。os。Bundle;

publicclassSPYActivityextendsActivity{//继承ActivityMainViewmv;//主View

intk=45;//灵敏度

//SensorManagermySensorManager;

//真机

SensorManagerSimulatormySensorManager;//测试时@Override

publicvoidonCreate(BundlesavedInstanceState){super。onCreate(savedInstanceState);

setContentView(R。layout。main);//设置当前用户界面

mv=(MainView)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);

1 2 3 4 5

关键词: 应用开发 水平 传感器 平台 Android 嵌入式 基于

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版