基于Andriod环境的指南针设计.docx

上传人:b****7 文档编号:11518630 上传时间:2023-03-02 格式:DOCX 页数:25 大小:2.12MB
下载 相关 举报
基于Andriod环境的指南针设计.docx_第1页
第1页 / 共25页
基于Andriod环境的指南针设计.docx_第2页
第2页 / 共25页
基于Andriod环境的指南针设计.docx_第3页
第3页 / 共25页
基于Andriod环境的指南针设计.docx_第4页
第4页 / 共25页
基于Andriod环境的指南针设计.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于Andriod环境的指南针设计.docx

《基于Andriod环境的指南针设计.docx》由会员分享,可在线阅读,更多相关《基于Andriod环境的指南针设计.docx(25页珍藏版)》请在冰豆网上搜索。

基于Andriod环境的指南针设计.docx

基于Andriod环境的指南针设计

1.训练要求

如今无论是为了应对城市复杂的交通情况,还是完成野外定向穿越的目标,指南针都是一项不可或缺的工具。

本次课程设计的任务是基于Andriod环境的指南针设计,利用Java语言和Eclipse开发工具对指南针代码进行编写。

要求实现其精确指南功能,且有流畅的罗盘旋转,界面正向会给出正确的方向描述,而指针一直指向北方。

 

2.需求分析

2.1功能需求

根据本次课题的要求,可以获得本次项目的基本需求,即能够帮助用户正确快速得判断方向,并且随着用户的位置移动,改变其指示方向。

当指南针软件运行试,屏幕中央的指针始终指向北方,而屏幕上方的说明框内会告诉用户正向的方向是什么。

2.2界面需求

播放器界面要求布局合理,简约,颜色舒适,能让用户一眼就能看出指南针的作用及操作方法。

能实现要求的功能。

要考虑到不同手机屏幕大小可能不一样,应尽量兼容大多数手机屏幕尺寸,使之显示无障碍。

2.3性能需求

(1)根据Android手机系统要求无响应时间为5秒,软件的响应时间应不超过5秒。

(2)系统精确、可靠。

(3)界面清晰大方,操作简单、流畅。

2.4运行环境需求

操作系统:

Windows 7 

支持环境:

Android 4.0版本 

开发环境:

Eclipse 4.4 ADT23.0.0

 

3.搭建Androdi开发环境

3.1安卓简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

目前,最新版本为Android2.4Gingerbread和Android3.0Honeycomb。

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。

Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。

底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。

  2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。

现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。

采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:

魅族(M9),华为、中兴、联想、蓝魔等。

3.2下载软件

n JDK    到   下载

n Eclipse4.4 到  http:

//www.eclipse.org/downloads/ 下载 

n Android 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;变量值:

 C:

/Program 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{ 

      public 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"?

>

android="

android:

id="@+id/linearlayout"

android:

layout_width="fill_parent"

android:

layout_height="fill_parent"

android:

background="@drawable/background_texture"

android:

orientation="vertical">

android:

id="@+id/button01"

android:

layout_width="fill_parent"

android:

layout_height="wrap_content"

android:

background="@drawable/prompt"

android:

paddingTop="20dp"

android:

layout_marginTop="20dp"

android:

text="方向"

android:

textColor="#FFF"

android:

textSize="30sp"/>

android:

id="@+id/sampleview01"

android:

layout_width="fill_parent"

android:

layout_height="400dp"/>

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;

}

@Override

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!

=null){

mView.setValues(mValues);

mView.invalidate();

}

if(mBtn!

=null){

floatdirection=mValues[0];

if(direction>22.5f&&direction<157.5f){

//east

mBtn.setText("东");

}elseif(direction>202.5f&&direction<337.5f){

//west

mBtn.setText("西");

}elseif(direction>112.5f&&direction<247.5f){

//south

mBtn.setText("南");

}elseif(direction<67.5||direction>292.5f){

//north

mBtn.setText("北");

}

}

}

 

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.w​i​n​7​下​A​n​d​r​o​i​d​开​发​环​境​搭​建.[EB/OL].

[5]MarkMurphy.BeginningAndroid2.[M].Berkeley:

APress,2010.

源码下载地址:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1