基于Andriod环境的指南针设计Word下载.docx
《基于Andriod环境的指南针设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于Andriod环境的指南针设计Word下载.docx(25页珍藏版)》请在冰点文库上搜索。
![基于Andriod环境的指南针设计Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/7d188224-42ef-4074-83c4-03184af75388/7d188224-42ef-4074-83c4-03184af753881.gif)
Android.Inc"
后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。
底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。
2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。
现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。
采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:
魅族(M9),华为、中兴、联想、蓝魔等。
3.2下载软件
n
JDK
到
下载
Eclipse4.4
http:
//www.eclipse.org/downloads/
下载
SDK
3.3
安装软件和配置环境
3.3.1
安装JDK
下载好的JDK是一个可执行安装程序,双击安装。
假设安装路径为:
C:
/Program
Files/Java/jdk1.6.0_05(当然其他路径也可以)。
JDK安装完成之后要设置系统环境变量:
我的电脑点右键,选择“属性”,选择“高级”标签,进入环境变量设置。
环境变量设置,分别设置三个环境变量:
JAVA_HOME、path变量、classpath变量。
(1)设置JAVA_HOME
在系统环境变量那一栏中点->
新建JAVA_HOME
(JAVA_HOME指向的是JDK的安装路径)。
变量名:
JAVA_HOME;
变量值:
Files/Java/jdk1.6.0_05
(2)设置path变量
在系统变量里找到path变量,选择->
编辑;
(里面已经有很多的变量值,是在变量值的最前面或其他位置加上%JAVA_HOME%/bin;
)。
变量名:
path
;
变量值:
%JAVA_HOME%/bin;
(3)设置classpath变量
新建classpath。
classpath
.;
%JAVA_HOME%/lib/;
%JAVA_HOME%/jre/lib/(注意,CLASSPATH最前面是有个“.”的,表示当前目录,这样当我们运行java
AClass的时候,系统就会先在当前目录寻找AClass文件了。
)
(4)JDK环境测试
配置完成下面写一个简单的java程式来测试J2SDK是否已安装成功:
public
class
HelloWorld{
static
void
main(String[]
args){
System.out.println("
Hello
world!
"
);
}
将程式保存为文档名为HelloWorld.java的文档。
打开命令提示符窗口,进入到HelloWorld.java所在目录,键入下面的命令:
javac
HelloWorld.java
java
HelloWorld
3.3.2
安装Eclipse
将下载的Eclipse压缩包解压到相应的安装目录即可。
3.3.3
配置Android环境
(1)
安装Android
Development
Tools
(ADT)插件启动eclipse,选择:
Help
>
Software
Updates
Find
and
Install....
在弹出的对话框中选择第二个选项:
Search
for
new
features
to
install,点击next,进入下一步。
选择New
Remote
Site,在弹出的对话框中键入远程站点的名字以及站点的URL:
https:
//dl-
Plugin和Europe
DiscoverySite,然后点击finish,进入下一步搜索的过程,如以下图所示。
在搜索结果框中,选择Android
Plugin,点击next进入下一步。
如果有错误提示,则点击右侧工具栏中的Select
Required(可能要等待几分钟),然后再点击next进入下一步,如以下图所示。
阅读和接受license
agreements,点击next进入下一步。
确认安装路径,点击finish,出现下载框,如以下图所示。
在出现的验证框中,选择install
all,开始安装,如以下图所示。
选择Yes,重启Eclipse
在Eclipse中,选择File
->
New
Project,在new
project对话框中可查到Android
project选项,如下图示,表示ADT插件安装成功。
(2)应用Android
SDK到eclipse
在Eclipse
工具栏中,选择:
Window
Preferences...
左边菜单中选中android,在右边浏览框中选择sdk的解压目录作为
sdk
location,点击Apply,然后点击OK即可
4.总体设计
指南针系统设计非常简单,通过注册传感器监听,获得方向向量数值,来达到旋转指针指示方向的目的。
流程如下:
5.详细设计
5.1界面设计
实现代码如下:
<
?
xmlversion="
1.0"
encoding="
utf-8"
LinearLayoutxmlns:
android="
android:
id="
@+id/linearlayout"
layout_width="
fill_parent"
layout_height="
background="
@drawable/background_texture"
orientation="
vertical"
>
<
Button
@+id/button01"
wrap_content"
@drawable/prompt"
paddingTop="
20dp"
layout_marginTop="
android:
text="
方向"
textColor="
#FFF"
textSize="
30sp"
/>
pass.SampleView
@+id/sampleview01"
400dp"
/LinearLayout>
5.2传感器的类型
各种类型的传感器:
1.加速度传感器Sensor.TYPE_ACCELEROMETER:
返回手机设备在X,Y,Z三个方向上的加速度.
2.磁场传感器,Sensor.TYPE_MAGNETIC_FIELD:
返回周围磁场在手机的X,Y,Z方向上的影响(磁场分量).
3.陀螺仪感应器:
Sensor.TYPE_GYROSCOPE:
4.光线传感器Sensor.TYPE_LIGHT:
返回周围光的强度,单位是勒克斯lx
5.距离感应器Sensor.TYPE_PROXIMITY:
6.重力传感器Sensor.TYPE_GRAVITY:
7.线性加速传感器Sensor.TYPE_LINEAR_ACCELERATION:
8.旋转向量传感器Sensor.TYPE_ROTATION_VECTOR:
9.方向传感器:
Sensor.TYPE_ORIENTATION:
返
回三个值,第一个为和正北方向的角度,沿Z轴旋转,0表示正北,90度表示正东,180表示正南,270表示正西.
第二个值绕X轴倾斜,水平屏幕向上,返回0,抬起手机顶部时,值开始减小,范围0~-180,从手机底部开始抬起,值范围为0~180.
第三个值为手机左侧或者右侧翘起的高度.沿着Y轴倾斜,范围是-90~90,水平放置为0,从左侧抬起,会从0到-90,从右侧开始抬起,范围为0~90.
10.Sensor.TYPE_TEMPERATURE:
温度传感器,返回摄氏度.
11.Sensor.TYPE_PRESSURE压力传感器,代表手机设备周围压力的大小
虽然AndroidSDK定义了十多种传感器,但并不是每一部手机都完全支持这些传感器。
5.3传感器的使用
Android提供的API中对于不同传感器的调用都是用同一个接口,这样编程起来显得非常简单。
先得到传感器的控制器,然后注册你感兴趣的感应事件,代码如下:
mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
mView=(SampleView)findViewById(R.id.sampleview01);
mBtn=(Button)findViewById(R.id.button01);
}
@Override
protectedvoidonResume(){
super.onResume();
//为系统的方向传感器注册监听事件
mSensorManager.registerListener(mListener,mSensor,
SensorManager.SENSOR_DELAY_GAME);
传感器的采样率有如下四种:
a)SENSOR_DELAY_NOMAL
(200000微秒)
b)SENSOR_DELAY_UI
(60000微秒)
c)SENSOR_DELAY_GAME
(20000微秒)
d)SENSOR_DELAY_FASTEST
(0微秒)
这里我使用了SENSOR_DELAY_GAME的获取数值速度。
5.4指南针的效果实现
这里,我们根据SensorEventListener接口实现对传感器的监听,当传感器发生变化的时候,我们获取传感器的方向数组mValues,并通过mValues中的第一个参数来实现指针旋转,以及正向方向的判定,进而刷新界面。
(1)指针旋转
publicclassSampleViewextendsView{
//定义一个Path对象以用于绘图
privatePaintmPaint=newPaint();
privatePathmPath=newPath();
privatefloat[]mValues;
publicSampleView(Contextcontext,AttributeSetattrs){
super(context,attrs);
//使用Path绘制指南针
mPath.moveTo(0,-50);
mPath.lineTo(-20,60);
mPath.lineTo(0,50);
mPath.lineTo(20,60);
mPath.close();
publicvoidsetValues(float[]mValues){
this.mValues=mValues;
protectedvoidonDraw(Canvascanvas){
Paintpaint=mPaint;
//设置笔刷颜色为白色
paint.setColor(Color.WHITE);
//得到画布的宽度和高度
intw=canvas.getWidth();
inth=canvas.getHeight();
//将坐标系平移到画布中央
canvas.translate(w/2,h/2);
if(mValues!
=null){
canvas.rotate(-mValues[0]);
}
//绘制Path
canvas.drawPath(mPath,mPaint);
}
(2)方向显示
publicvoidonSensorChanged(SensorEventevent){
//当传感器发生变化时,更新界面
mValues=event.values;
if(mView!
mView.setValues(mValues);
mView.invalidate();
}
if(mBtn!
floatdirection=mValues[0];
if(direction>
22.5f&
&
direction<
157.5f){
//east
mBtn.setText("
东"
}elseif(direction>
202.5f&
337.5f){
//west
西"
}elseif(direction>
112.5f&
247.5f){
//south
南"
}elseif(direction<
67.5||direction>
292.5f){
//north
北"
}
6.模拟和调试
由于指南针软件需要用到手机上的传感器,所以调试步骤需要分别在模拟器和手机上进行。
6.1在模拟器上运行
完善上述代码,在Eclipse上调试运行。
结果如下图:
模拟器主界面
模拟器程序界面
模拟器上指南针运行效果图
6.2在手机上运行
测试结果如下图:
7.结果分析
经过调试,程序正确地执行,打开软件即出现一个黑色背景的画布,画布中央有白色指针。
上方有黑底方框和白色字样显示手机正向指向的方向。
当我水平放置手机时,移动或旋转手机方向,屏幕中央的指针也会随之而旋转,始终保持指向北方。
而屏幕上方的白色字样会在“东、西、南、北”四字之间变动,告诉用户手机正对着什么方向。
该程序还是有一些问题的存在,比如没有允许手动输入地磁偏角。
没有显示准确的方位数值。
没有罗盘界面等等。
8.心得体会
通过这次课程设计,我对Android程序设计有了新的认识。
首先是对搭建Android的繁琐步骤从一开始非常吃力对照教程进行的陌生到可以轻易帮助他人快速搭建成功的熟悉,弄清了环境变量的配置及其目的。
其次是熟悉了Eclipse的使用,从一开始错误连连,难以弄清头绪,到后来可以熟稔得解决各种报错。
正确地编译并运行程序。
也熟练了自己对模拟器的使用、配置。
最后是在传感器方面,我弄懂了许多基础理论,了解了传感器的类型以及基本的使用方法。
不过自己还有很多方面不足,比如对JAVA的不熟悉,导致在编程过程中常常受阻,需要查阅资料或者寻求帮助。
在这个循序渐进的过程中,我解决了一些自己的认为比较难的地方后我又继续朝前行进着。
课程设计终于在我的努力下做完了。
我更加深入的了解了Android的特点以及一些相关知识。
与其临渊羡鱼,不如退而结网。
这次Android课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,在你的勇气和毅力下,困难是抬不了头的。
如果你连失败都不怕了,那你还怕什么,拾起懒惰的心,勤奋就会走向成功。
这次的课程设计在我未来的时日里,是一个标杆,因为它告诉了我,只要我努力没有什么事我做不好的。
最后我要感谢戚欣老师对我们的辛勤培养,谢谢
9.参考文献
[1]林城.Android应用开发实战[J]
.
机械工业出版社,2011:
17-321.
[2]韩超.Android经典应用程序开发[J]
人力资源出版社,2011:
5-18.
[3](美)CayS.Horstmann,GaryCornell.Java核心技术[J].机械工业出版社,2008:
15-17..
[4]lcsmwp.win7下Android开发环境搭建.[EB/OL].
[5]MarkMurphy.BeginningAndroid2.[M].Berkeley:
APress,2010.
源码下载地址: