Android操作系统应用开发报告

关键词: 无线 移动 课程 学习

Android操作系统应用开发报告(共8篇)

篇1:Android操作系统应用开发报告

Android操作系统应用开发报告

项目名称: 作

者: 学

号: 完成时间:1.开发目的

本次应用开发的预期目的及相关功能介绍。

2.程序系统

对所开发程序系统的介绍,包括总体结构,程序系统中各个程序或函数的名称及其介绍,他们之间的层次关系。

3.主要功能

说明所开发程序系统具有的实际功能。

4.基本流程

用图给出所开发程序系统的实际处理流程。

5.出错原因分析

给出开发过程中出现错误的原因分析。

6.开发心得

列出本次课程开发工作中所得到的经验与教训,以及心得体会。

篇2:Android操作系统应用开发报告

刚开始接触Android感觉到它很有意思,在界面开发上和web也可以形成了相通的架构,更加方便,视觉上也是非常的酷,在前期我通过的大量的Android SDK开发范例大全中的例子以及Android提供的APIDEMOS进行学习,尽管例子之间的连接比较零散,不过通过这些例子的学习我可以学习到了很多和以前java上相通的思想,因为Android在现在也是全新的技术和框架,在其中我也学到了如何用单例模式、工厂模式等常用的设计模式进行学习,通过API进行开发客户端,对Request发送,Response处理中通过比较方便的JSON对象传输,以及对XML、JSON、图片、业务等下载处理,对API接口调用等问题处理。

首先在界面上,我们同样可以通过不同布局进行设计非常酷的界面,这些界面可以通过include进行引入,和jsp、html也有相通的地方,同样在android上可以用到自定义的样式这和css也有比较相通的地方,我们可以通过一些公用的方法写个BaseActivity这个基类,通过继承方式比较不错的实现了Activity的界面,因为这样你可以Header(头部)和Footer(尾部)进行处理一些触发事件或者特效等。布局模式以相对模式为主,线线布局模式可以在比较简单的include进行完成,最重要的一点就是:我们可以自己通过重写方法或者通过实现View或者Layout等类进行扩充项目需

要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。

Android的界面显示同样也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的样式来做的。具体细节不想说了,可以参考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI这篇Doc。其他还有很多,感觉算是SDK讲述的最多的内容。从控件的使用上,和网页的设计类似,尽量用parent_width之类的抽象长度,用Theme来做风格,抽取所有的字串等信息做本地化设计。相关内容参看Implementing a UI就好。

一类比较重要的是数据绑定控件。如果做过ASP.Net会从中看到很多类似的地方。一个支持数据绑定的控件,比如ListView。可以通过一个 ListAdapter绑定到一个数据源上。ListAdapter是一个抽象类,主要的实现类包括SimpleAdapter和 SimpleCursorAdapter。前者是绑定一个静态的Array,后者是绑定一个动态的Cursor。Cursor前面说过,是一个指向数据源的随机迭代器,将View绑定到Cursor通常要设置这样几个参数。一个是每一行的样式,称作Row Layout,其实就是一个普通的Layout的XML文件。还有就是一个列和现实控件的对应关系。那个控件显示哪个列的值,这是需要配置的。为了定制一个良好的数据显示控件,最简单你可以定制很PP的Row Layout,复杂一点就是可以重载绑定控件View,或者是适配器ListAdapter。如果是一个数据显示密集的应用,且你对UI有些追求,这个工作估计是必不可少的。

一个主要用于显示数据内容的Activity,可以选择派生自ListActivity。它提供了一个具有

ListView 的Layout,还有

simple_list_item_1, simple_list_item_2, two_line_list_item等默认的Row Layout,还有一些比较不错的API,和可供响应选择Item的事件。可以满足你比较基础的需求。如果你觉得只有一个ListView的界面太突兀,你可以为这个ListActivity指定一个Layout,需要注意的是,你需要提供一个id为@android:id/list的ListView控件,避免Activity在内部偷偷寻找该控件的时候失败。

篇3:Android操作系统应用开发报告

1 软件开发中的信息科技

软件开发的学习不仅仅要求学生掌握基础知识和原理知识,而是要对于其能够掌握和运用,这就需要提升学生的实践应用能力和开发能力。也就是说,在掌握了软件开发的基本概念和技术性要点之后,学生就可以据此进入到实践的环节,并根据自己的理解实现创新。一些学校对于软件开发课程已经开设了项目实践。将软件开发项目中的全过程,包括项目分析、软件设计以及项目实现应用到实践当中,贯穿于整个的过程,以推动理论与实践有效结合。

比如,要使用计算机软件设计一个学生基本信息录入窗口。以窗口和常用控件作为软件开发项目的主体,以创建一个学生基本信息录入窗口。在教学的过程中,学生首先要对于各种窗口的控件充分了解,并能够灵活使用。最重要的是,要熟悉每一个控件的特性,以避免操作上出现失误。对于属性和方法的引用格式,学生都要学会操作,并能够在教师的指导下创建实践过程。当学生基本信息窗口被创建完成之后,尝试着将学生信息功能添加进去。以实践操作的方式,加深了学生对于原理知识的理解,并掌握了对于有关知识分析的能力。

2 Android操作系统的软件开发

2.1 建立Android创新实验室

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。

智能手机和平板电脑都是被普遍使用的移动设备,其所应用的操作系统就是Android。Android的操作系统主要支持的就是手机,从2008年开始,逐渐地向平板电脑扩展,目前在其他的领域中也对于这个操作系统有所涉及。学校在进行软件开发项目教学的过程中,鉴于Android的广泛应用性,可以尝试着建立起科技创新实验室,其中以Android操作系统的软件开发项目为研究主题,将计算机和网络技术容纳于其中。

从信息科技的角度来分析,计算机与网络教学主要承担的是操作系统的研究。学生在实验室中针对计算机的硬件和软件都要有所熟悉,并熟练操作。计算机的网络设计是Android实验室中的一项重要内容,主要是设计手机的界面和各种功能的软件开发活动。教师在指导过程中,要以学生的特长和兴趣爱好为引导主线,请学生亲自操作,教师在一旁观看指导。当学生具备了一定的软件编程水平之后,为了激发学生的学习积极性,可以展开编程竞赛活动,将学生们在Android实验室中作创作的作品展示出来。

2.2 设立软件开发特需课程,加强实践

软件学校针对软件开发项目设立特需课程研究课题,使特需课程实践更为正规化。特需课程实践的目的是要将课程设计为满足学生的需求,将学生的潜能开发出来。在进行软件开发项目中,特需学生会主动参加实验活动。比如,当学生对于Android实验室的软件开发项目过程已经非常熟悉了,但是意犹未尽,就会提出更新项目,此时教师就会根据学生的需求提供其他的工作室供学生自主选择。对于新的信息科技项目,学生要求使用Android工作场所,并应用Android软件开发程序,教师在满足学生的同时,还可以师生共同探讨课题。经过了探索和实践之后,学生实现了软件开发项目设计上的创新。

2.3 考核

对于软件开发项目的特需课程实践效果,要经过考核的方式加以验证。考核以笔试、操作和答辩三个阶段来完成,评分比例为20:40:40。笔试,主要是软件开发项目中的基础原理性的内容,以考查学生对于知识的掌握程度。操作,是制定软件开发项目,请学生亲自上机操作完成,老师进行评分。答辩,是学生要对于自己所设计的软件进行讲解,并回答教师所提出的相关问题。采用特需课程实践教学法,可以增强学生的计算机软件开发能力,摒弃了传统的重视基础知识而忽视实践操作的教学弊端。学生能够独立地完成软件开发项目,并且为计算机技术方面的未来发展奠定了良好的基础。

3 结语

随着Android平台的扩张,引发了Android人才荒,2010年移动开发人才需求20万,未来人才需求缺口将达百万。但符合条件的Android工程师屈指可数,企业招聘难度可想而知。我们相信,在未来几年内,Android开发软件工程师将成为3G行业炙手可热的岗位之一。3G人才全球紧缺,实用人才培养已迫在眉睫,在国内三大运营商如火如荼的3G营销战持续升温,再加上3G的推出对整个行业的巨大推动作用,无疑将引爆3G手机开发工程师这个黄金职位。

参考文献

[1]牛军涛.以项目为导向的软件开发课程教学模式研究与实践[J].计算机教育,2013(04).

[2]朱建国.信息科技创新实验室和特需课程[J].上海教育,2008(23).

篇4:Android操作系统应用开发报告

关键词: Android系统; 蓝牙; 单片机; 步进电机

中图分类号: TP 316文献标识码: Adoi: 10.3969

引言Android是Google开发的一款基于Linux的开源手机系统,由于其完全开放的特点,Android开发群体和用户越来越多,逐渐成为市场份额最大的智能手机操作系统。除了在移动通信方面,Android系统已经应用到其它电子领域,如平板电脑、手持设备等。设备间的数据传输方式主要包括USB传输、红外传输、蓝牙传输,USB传输速度快、即插即用、便于扩展,Android系统从SDK3.1平台开始引入ADK(accessory development kit),使不支持USB Host功能的Android设备可以与其它USB设备通信。红外传输是一种无线通信技术,因为传输距离较短、易受干扰,现在更多使用蓝牙作为无线传输[1],蓝牙传输方便稳定。Android系统同时支持蓝牙通信,通过对Android系统的蓝牙开发研究,对蓝牙、单片机编程,以实现与单片机通信。 1系统设计原理Android系统控制单片机步进电机系统结构图如图1所示。首先由Android系统提供的蓝牙API接口,编写应用程序,实现蓝牙设备的基本操作,设备连图1系统结构框图

Fig.1Block diagram of system structure接正常后,通过Bluetoothsocket实现数据的输入、输出。单片机蓝牙模块接到数据命令后,调用单片机控制程序,控制步进电机的加速、减速、转向。2Android蓝牙应用程序设计

2.1Android蓝牙协议栈Android系统从2.0开始支持蓝牙,使用了BlueZ协议栈,BlueZ通过DBUS来通信交互的。BlueZ是Linux内核的官方蓝牙协议栈,目前在较高Linux内核版本中已有支持,也是目前应用最广泛的蓝牙协议栈,几乎支持所有已通过认证的蓝牙设备。该协议栈由多个相对独立的模块组成,内核空间主要包括设备驱动层(蓝牙的设备驱动一般是指电源的开关驱动以及通信接口的驱动,如串口、USB等)、L2CAP层与SCO音频层、RFCOMM、蓝牙核心及HCI层、BNEP、CMTP层与HIDP层、通用蓝牙SDP库和后台服务及面向所有层的标准套接字接口。Android提供Bluetooth通信的API是BlueZ 的RFCOMM的封装,RFCOMM层支持标准的套接口,图2蓝牙通信流程图

Fig.2Flowchart of bluetooth communication process并提供了串行仿真TTY接口,这使串行端口应用程序和协议可以不加更改地运行在蓝牙设备上[24]。蓝牙应用程序设计主要包括:蓝牙打开、蓝牙查找、蓝牙连接、数据通信等四个模块[56],流程图如图2所示。Android系统为蓝牙开发提供了API,其中最主要的几个类包括:BluetoothDevice:蓝牙设备类,包括蓝牙设备的名称、MAC地址等信息。Bluetoothsocket:蓝牙套接字的接口类,蓝牙设备间数据输入输出的连接点。光学仪器第35卷

第1期周进波,等:基于Android系统蓝牙开发的研究与实现

BluetoothAdapter:蓝牙适配器类,所有蓝牙设备交互的接口,包括查找、绑定、监听其它设备。通过调用上面几个基本类中的方法可以实现蓝牙设备的基本操作。

2.2蓝牙设备打开首先获取蓝牙适配器,通过方法GetDefaultAdapter(),返回本地BluetoothAdpter,通过该对象就可以操作蓝牙设备了,如果返回为空,则启动蓝牙失败,需要检测设备蓝牙模块是否正常工作。然后判断蓝牙是否打开,如果蓝牙处于disable状态,则需要封装ACTION_REQUEST_ENABLED到intent对象,通过startActivityForResult()方法调用intent对象打开蓝牙。

2.3蓝牙设备查找获得蓝牙设备包括新扫描的设备和已经绑定的设备,程序先要注册一个ACTION_FOUND动作的广播,调用startDiscovery()方法,每次发现一个设备,系统就广播一次,将设备的信息包括设备名、设备mac加入设备列表;调用 getBondedDevices()方法得到已绑定的设备数量,依次加入到设备列表。因为在整个扫描过程要持续12 s左右,占用一定系统资源,在设备连接之前,程序要调用cancelDiscovery()方法取消设备查找,减少资源浪费。

篇5:Android操作系统应用开发报告

课程设计报告书

2017-2018学年第一学期

课程名称:《Android应用程序设计课程设计》

设计题目: 计算器的设计和实现 系

别: 信息工程系 班

级: 移动16 姓 名: 杨芝源 起止日期: 2018.1.2---2018.1.12 指导教师: 黄旺华

摘要

Android是当今最重要的手机开发平台之一,他是建立在Java 基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。

本实训是在学习java语言程序设计的基础上进行的一次综合实践。通过综合训练,要求学生掌握java语言程序设计的基本技能和Android编程的应用开发手机app,并较系统地掌握JAVA语言程序设计开发方法以及帮助文件的使用等。

简单计算器又是手机上必备的小程序,所以此次创新实践很有意义,使用性很强。

关键词: Android 手机app 计算器

目录

1、需求分析...................................................................................................................1

2、概要设计...................................................................................................................2

2.1 总体设计...................................................................................................2 2.2 模块设计...................................................................................................3

3、详细设计...................................................................................................................5

3.1 输入模块...................................................................................................5 3.2 显示模块...................................................................................................5 3.2 计算模块...................................................................................................5

4、实现............................................................................................................................7

4.1 公共类.......................................................................................................7 4.2 加减乘除模块1........................................................................................7 4.3 三角函数模块2........................................................................................7 4.4 某某模块3................................................................................................7

5、测试..........................................................................................................................8

5.1 测试方案...................................................................................................8 5.2 测试用例...................................................................................................8 5.3 测试结果...................................................................................................8

6、总结..........................................................................................................................9

1、需求分析

随着智能手机的普及,生活工作等方面的应用都迁移到手机中,本课程设计旨在实现一种某某的APP,为人们解决设计一款基于Android系统下的计算器,实现一般计算器可以进行的加减乘除算法,科学计算三角函数以及清零操作。

通过对该问题的分析,APP主要涉及的对象有:计算器

主要的事务是:

1、计算器界面友好,方便使用,具有良好的交互性。

2、具有基本的加、减、乘、除功能,还有+—、开方、平方功能。

3、能够判断用户输入运算数是否正确。

4、支持小数运算。

5、具有退格功能,能够删除最后一个输入,ce。

6、具有清除功能,删除所有,c。

7、具有结果存储功能,能够显示存储器状态,支持触屏手机。

需求分析得出的流程图:

知道了系统的功能以后,我们通过main.xml来建立显示界面,完成后系统开始监听用户的按键输入,每次输入系统都会判断一次用户输入的类型,是数字还是运算符号或者是清除,判断完后分成不同类型如数字,符号,基本运算等等进行进一步的处理,根据用户的要求继续进行下一步的操作,最后计算出最终结果并显示在显示区。系统流程图如图所示:

2、概要设计

2.1 总体设计

整个程序基于android技术开发,出总体模块外主要分为输入模块、显示模块以及计算模块(包括一些其它功能)这三大部分。

在整个系统中总体模块控制系统的生命周期,输入模块部分负责读取用户输入的数据,显示模块部分负责显示用户之前输入的数据以及显示最终的计算结果,计算模块部分负责进行数据的运算以及一些其她的功能。

总体模块的作用主要是生成应用程序的主类,控制应用程序的生命周期。

主要:由于不同的Android手机有着不同的分辨率,将不同分辨率的图标图片放置在相应位置。Drawable-hdpi中放置分辨率最高的图标,drawable--ldpi中放置分辨率中等的图标,drawable-mdpi中放置在分辨率最低的图标。

2.2 模块设计

一、输入模块

输入模块主要描述了计算器键盘以及键盘的监听即主要负责读取用户的键盘输入以及响应触屏的按键,需要监听手机按键动作以及用指针事件处理方法处理触屏的单击动作(以松开按键为准)。同时提供了较为直观的键盘图形用户界面。

二、显示模块

显示模块描述了计算器的显示区,即该区域用于显示用户输入的数据以及最终的计算结果,同时还负责显示一些其她的信息。

三、计算模块

计算模块则主要描述了计算器的整体,实现了计算器的界面,负责计算用户输入数据,包括加、减、乘、除、等各种计算功能,记忆数据的相关功能,退格以及清零的功能。、详细设计

3.1 输入模块 一)界面效果

二)类块模型图

3.2 显示模块 一)界面效果

二)类块模型图

3.3 计算模块 一)界面效果

二)类块模型图、实现

开发环境介绍

4.1 公共类

4.2 某某模块1

4.3 某某模块2

4.4 某某模块3

74、测试

5.1 测试方案

5.2 测试用例

5.3 测试结果

篇6:Android大作业报告

发 大作业报告

姓 名: 学 号: 班 级: 院 系: 日 期:

任课教师:

一、程序的运行环境、安装步骤

1、运行环境 游戏运行环境:Android1.5以上版本

2、程序的组成部份:

2.1、JDK安装

1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: 2.JAVA_HOME值为: D:Program FilesJavajdk1.6.0_18(你安装JDK的目录)3.CLASSPATH值为:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;4.Path: 在开始追加 %JAVA_HOME%bin;5.NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。

安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:

2.2、Eclipse安装 2.3、Android SDK安装

在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的“Force https://...”这项,再点击Available Packages。

选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包

在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windowstools)。image图

2、设置Android SDK的环境变量

“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。

运行 android –h 如果有类似以下的输出,表明安装成功:

3、验证Android SDK是否安装成功

2.4、ADT安装

打开 Eclipse IDE,进入菜单中的 “Help”-> “Install New Software” 点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如下图所示:

确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。如下图所示:

然后就是按提示一步一步next。完成之后:

选择Window > Preferences...在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:

D:AndroidDevelopandroid-sdk-windows点击Apply、OK。配置完成。2.5、创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD。

1、在Eclipse中。选择Windows > Android SDK and AVD Manager

2、点击左侧面板的Virtual Devices,再右侧点击New

3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值

4、点击Create AVD即可完成创建AVD 注意:如果你点击左侧面板的Virtual Devices,再右侧点击New,而target下拉列表没有可选项时,这时候你:

点击左侧面板的Available Packages,在右侧勾选https://dl-ssl.google.com/android/repository/repository.xml,如下图所示:

然后点击Install Selected按钮,接下来就是按提示做就行了

要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages)。2.5、创建Android工程

三、程序开发平台

(1)代码行数:1000

(2)开发环境:Android Developer Tools Build: v22.6.2-1085508

apache-ant-1.9.3

四、程序功能说明:

单机屏幕按住不放可以拖动魔方转动,魔方上下左右空白处可以转动魔方相对那一面。

五、应用核心源码

class MFtestSurfaceView extends GLSurfaceView {

private MFtestRenderer mRenderer;

private float mPreviousX;

private float mPreviousY;//上一次的点

private float mDownPreviousX;

private float mDownPreviousY;//上一次的Down点

// private int oldDownX;

// private int

private float theta;

private float fai;//球坐标

public MFtestSurfaceView(Context context){

super(context);

theta=(float)3.14159/4;

fai=(float)3.14159/4;

// Set the Renderer for drawing on the GLSurfaceView

mRenderer = new MFtestRenderer();

setRenderer(mRenderer);

setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);

}

@Override

public boolean onTouchEvent(MotionEvent e){

// MotionEvent reports input details from the touch screen

// and other input controls.In this case, you are only

// interested in events where the touch position changed.float x = e.getX();

float y = e.getY();

switch(e.getAction()){

case MotionEvent.ACTION_MOVE://如果是 移动的话

float dx = xmPreviousY;//x,y的变换值(不是0,就是1)

float te=theta;

theta=theta+dy/100;//角度是弧度值

if(!(theta>0&&theta<3.14159))

{

theta=te;//法线始终向上

}

fai=fai+ dx/100;

//x=rsinθcosφ

mRenderer.eyez=(float)(3*Math.sin(theta)*Math.cos(fai));

//y=rsinθsinφ

mRenderer.eyex=(float)(3*Math.sin(theta)*Math.sin(fai));

////z=rcosθ

利用球坐标使观察点始终维持在半径为3的球上

mRenderer.eyey=(float)(3*Math.cos(theta));

requestRender();

//System.out.println(x+“

”+y);

break;

case MotionEvent.ACTION_DOWN:

mDownPreviousX=x;

mDownPreviousY=y;

break;

case MotionEvent.ACTION_UP:

if((((x-mDownPreviousX)>-5)&&((x-mDownPreviousX)<5))&&(((y-mDownPreviousY)>-5)&&((y-mDownPreviousY)<5)))//(((x-mDownPreviousX)>-3)||((x-mDownPreviousX)>-3))&&(((y-mDownPreviousY)>-3)||((y-mDownPreviousY)>-3))

{

//System.out.println(x-mDownPreviousX);

if(x

<(mRenderer.width*(1-Math.sqrt(18)/6)/2))

{

//左

//System.out.println(x+“

”+y);

mRenderer.action = 1;

DrawAnimation();

}

else if(x

>

mRenderer.width-(mRenderer.width*(1-Math.sqrt(18)/6)/2))

{

//右

//System.out.println(x+“

”+y);

mRenderer.action = 2;

DrawAnimation();

}

else if(y

<

mRenderer.height/2.0-!)

switch(mRenderer.action){

case 1:

if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){

mRenderer.move=76;

}

else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){

mRenderer.move=70;

}

else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){

mRenderer.move=82;

}

else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){

mRenderer.move=66;

}

break;

case 2:

if((mRenderer.eyex > 0)&&(mRenderer.eyez > 0)){

mRenderer.move=66;

}

else if((mRenderer.eyex > 0)&&(mRenderer.eyez < 0)){

mRenderer.move=76;

}

else if((mRenderer.eyex < 0)&&(mRenderer.eyez < 0)){

mRenderer.move=70;

}

else if((mRenderer.eyex < 0)&&(mRenderer.eyez > 0)){

mRenderer.move=82;

}

break;

case 3:

mRenderer.move=85;

break;

case 4:

mRenderer.move=68;

break;

}

}

private void memcpy(int one,int two){

mRenderer.face_color[one]=mRenderer.face_color[two];

mRenderer.face_color[one+1]=mRenderer.face_color[two+1];

mRenderer.face_color[one+2]=mRenderer.face_color[two+2];

}

private void LeftShift(int a,int b,int c,int d){

// a

float temp1=mRenderer.face_color[a];

float temp2=mRenderer.face_color[a+1];

float temp3=mRenderer.face_color[a+2];

memcpy(a,b);

memcpy(b,c);

memcpy(c,d);

mRenderer.face_color[d]= temp1;

mRenderer.face_color[d+1]=temp2;

mRenderer.face_color[d+2]=temp3;

} }

private void DrawRotation(GL10 gl){

// 绘制小立方体

switch(move){ case 70: DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);

gl.glPushMatrix();gl.glRotatef(-angle,0.0f,0.0f,1.0f);DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);

DrawCube7(gl);

DrawCube23(gl);

gl.glPopMatrix();break;case 66: DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);

DrawCube23(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);

DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl);

gl.glPushMatrix();

gl.glRotatef(angle,0.0f,0.0f,1.0f);

DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);

DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);

gl.glPopMatrix();

break;

case 85:

DrawCube3(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);

DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);

DrawCube8(gl);DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);

DrawCube15(gl);DrawCube16(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);

gl.glPushMatrix();

gl.glRotatef(-angle,0.0f,1.0f,0.0f);

DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube9(gl);

DrawCube10(gl);DrawCube11(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);

gl.glPopMatrix();

break;

case 68:

DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);

DrawCube4(gl);DrawCube5(gl);DrawCube9(gl);DrawCube10(gl);

DrawCube11(gl);DrawCube12(gl);DrawCube13(gl);DrawCube17(gl);

DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);

gl.glPushMatrix();

gl.glRotatef(angle,0.0f,-1.0f,0.0f);

DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);DrawCube14(gl);

DrawCube15(gl);DrawCube16(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);

gl.glPopMatrix();

break;

case 82:

DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);DrawCube25(gl);

DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);

DrawCube16(gl);DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);

DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);

gl.glPushMatrix();

gl.glRotatef(-angle,1.0f,0.0f,0.0f);

DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);

DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);DrawCube8(gl);

gl.glPopMatrix();

break;

case 76:

DrawCube0(gl);DrawCube1(gl);DrawCube2(gl);DrawCube3(gl);

DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);

DrawCube8(gl);DrawCube9(gl);DrawCube10(gl);DrawCube11(gl);

DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);DrawCube15(gl);DrawCube16(gl);

gl.glPushMatrix();

gl.glRotatef(-angle,-1.0f,0.0f,0.0f);

DrawCube17(gl);DrawCube18(gl);DrawCube19(gl);DrawCube20(gl);

DrawCube21(gl);DrawCube22(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);

gl.glPopMatrix();

break;

default:

break;

}

六、工程运行效果截图

10月20日 查找Android开发的配置及流程 10月22日 查找资料确定要使用的算法与数据结构 10月23日 系统设计 10月24日 开始编码

10月28日 游戏基本功能完成,进入测试阶段 11月2日 程序开发完成,编写文档

八、总结

篇7:Android实习总结报告

Xxxxxx大学

专业实习报告

——201X.XX.XX

XXXXXXXXXXX学院 计算机通信

信息技术有限公司 201X.XX.X XXXXXXXXXX XXXX XXXX XXXXXXXX

一、实训地点

XXXXXXXX信息技术有限公司是一家隶属于XXXXXXXX集团主要从事软件开发、技术咨询与服务、IT教育投资、大学生实习实训等业务的民营科技型企业。

二、实训目的

到实际生产中的种种Android

Android现对androidAndroid

Android

android实习可以让我们与时代最目的:

1、培养学生运用所学课程Java语言程序设计的理论知识和技能,分析解决计算机实际应用中的问题的能力。

培养学生在Java语言程序设计的基础上,开发Android应用程序的思想和方法。培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。通过课程设计,要求学生在指导教师的指导下,独立完成课程设计的全部内容 包括:

1、确定开发的程序,收集和调查有关技术资料。

2、按软件工程步骤进行程序设计。

3、对完成的程序进行测试和完善。

4、完成课程设计报告。

三、实训内容

学习实训的内容主要包括如下:

 开发环境:了解了android的起源与发展,学习安装 Eclipse 插件(ADT)学习AndroidSDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具

 Android项目结构:src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。这个文件由Android开发工具自动产生的。res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。assets资源目录Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件。AndroidManifest.xml 项目清单文件。

 基础开发

一、1.Activity:是Android系统中的四大组件之一。2.Activity生命周期:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期

二、Intent: Intent对他要完成操作的一种抽象描述,我们可以用intent来启动一个activity,发起一个broadcast和启动或绑定一个service。Intent使应用程序代码在运行时动态绑定成为可能,这也降低了不同代码之间的耦合性。Intent最常使用的方法是用来启动一个activity。Intent封装了他要执行动作的属性,这些属性最常见的是action和data Intent主要有以下四个重要属性:dssAction:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。

Data:Data通常是URI格式定义的操作数据。例如:tel://。通过setData()方法设置。

Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。

Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

三、Service四大主键职业,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。要完成比较耗时的任务;不需要用户界面;

四、BroadcastRecever 生命周期

1.在广播到达接收者时调用onRecever();方法

2.注册广播的几种方式包括:代码注册;项目清单注册;

五、Handler 1.Handler、Message、MessageQueue和Looper之间的关系的关系,Handler的作用: Handler(一个线程可以有多个Handler但是只能有一个Looper), 关系:向消息对列(MessageQueue封装在Looper中)发送消息,Handler在创建时就会关联以个Looper默认关联当前Looper.作用:发送消息(Handler在主线程启动一个子线程,在子线程调用SendMassager(),发送到主线程的HandlerMessage()方法);处理消息(调用HandlerMessage()方法处理)。

 数据存储

一、Sharepreference:保存应用系统的配置信息等的键值存储机制。(使用键值机制:Bundle ContentValues Map JSONObjecdt)

二、存储方式 1)是一种键值存储方式,可以持久化存储变量的值(Sharepreference存储的值都是基本类型的数据)存储的数据是以xml文件的形式存在,存储在/data/data/packagename/shared_prefs目录中文件存储

I/O存储,主要是用于大文件的数据的存取,比如视频、图片等,该中存储方式在使用的过程当中更新比较困难。

文件存储的使用:Activity提供了openFileOutput(name,mode)方法和openFileInput()方法,用于读写文件数据.第一个参数name中不能包含路径分隔符“/”

三、Sqlite

自定义一个数据库的操作类,该类要extends SQLiteOpenHelper类

public class MyHelper extends SQLiteOpenHelper { //类没有实例化,是不能用作父类构造器的参数,必须声明为静态

private static final String name = “china”;//数据库名称 private static final int version = 1;//数据库版本 public MyHelper(Context context){ //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类

super(context, name, null, version);} public void onCreate(SQLiteDatabase db){

//该方法是在第一次实例化数据库操作对象的时候被调用

//可以在其中做一些初始化的工作,比如创建数据库表等

} public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){

//在数据库的版本发生改变的时候会被调用

} }

四、ContentProvider 实现不同应用之间数据的访问和共享: 1)通过实现一个ContentProvider的抽象借口,将本应用的数据完全暴露出去,其中数据是以表的形式暴露的,暴露数据的时候要提供公共的URI。

2)其它应用通过android提供的ContentResolver接口访问ContentProvider暴露的数据。

五、网络存储

一、通过网络提供的存储空间来上传或者是下载那些存储在网络空间的数据信息。

网络编程:分为两种 1)基于Socket的网络编程:该网络编程使用的协议主要是TCP和UDP协议

面试题:TCP和UDP区别:TCP:面向连接 可靠 延时长 效率低UDP:面向无连接 不可靠 延时短 效率高Socket+ServerSocket+TCP(套接字)UDP+DatagrarmSocket+DatagramPackage(数据报)2)基于Http的网络编程:

 该网络编程使用的协议是面向Http协议;  该网络编程是以xml/json格式的数据为载体,来进行相互通信数据;  Android基于http协议的网络编程,使用的标准接口有两个:HttpURLConnection以及apatch的接口HttpClient Http协议通信分为两种方式:get请求方式和post请求方式

六、Xml格式数据解析Json格式数据解析:

Dom解析:dom解析一般是把xml文档转换成一棵文档节点树,存储在内存中

优点:xml文档树在内存中完整存储,可以直接对该文档树的数据和结构进行修改;可以通过解析器去访问节点树上的任何一个节点;Dom解析的API使用简单方便。

缺点:当xml文档比较大的时候,该解析方式消耗内存资源 Sax解析:

优点:对内存的要求较低,方便解析xml的部分;

缺点:当xml文档结构复杂的采用SAX解析,编码过程比较复杂 Pull解析:sdk提供的内置解析方式,解析过程类似于sax解析,节省内存资源,而且比sax解析更加简单方便。

JSON格式数据:(1)key-value键值对象(无序的)(2)数组(有序的)

用到的内容包含:4个类一个异常

JSON格式数据的解析可以使用Google提供的gson解析工具 问题:xml格式数据解析和JSON格式数据解析的比较

四、实训心得:

1通过几个月的android实习,基本掌握了Android应用程序开发的一般流程。对常用控件基本掌握其用法,对其事件的监听方法也基本掌握。学习Android不仅是对前沿开发技术的了解,也是对编程知识的一次提升。

2通过学习Android的控件、布局、Activity、Service等一系列基础知识,对整个Android的开发有了大致的了解。例如: 要的布局(或者控件),在学习界面中,我发现Android为我们提供了很好的类似反射机制,通过Layout文件夹下的配置文件,可以快速的形成界面,在配置文件可以设置属性或者样式都是很快捷方便。对比较特殊的界面也可以通过处理嵌入到指定的界面,同样你可以通过java代码直接创建View进行添加,不过这种方式比较复杂。对一些点击、选中、按键等处理的事件,界面之间的 跳转Intent管理,通过Bundle对数据在界面之间进行传输。

4在手机交互式通信服务中,学习了Android手机之间进行短信发送、广播、对广播的监听、服务等,在Service类中没有context,可以通过Handler来每秒反复运行,自动送出系统广播信息,同时在这里我们也知道可以设计一个常用的变量类,设计一个当前的CurrentActivity这个变量进行控制,进行处理。

篇8:Android操作系统应用开发报告

1 移动平台总体设计

移动平台基于Android系统, 采用C/S模式结构。C/S模式结构充分利用了两端硬件环境的技术优势, 将任务合理的分配到客户端与服务器。降低了系统通讯开销。C语言移动学习系统主要遵循以下3项设计原则。

1.1 学习资源的微型化

在移动学习过程中, 学习者可能会处于一个嘈杂的环境之中, 所以学习过程难免会受外界干扰, 注意力集中的时间也相对较短。因此, 在移动学习系统的开发过程中, 一定要遵循“短小精悍”的原则, 尽量开发一些较简短的学习模块。学习单元的时间一般控制在10分钟左右, 同时每个学习单元之间的关联性不要太强, 也就是说这一单元的学习不会影响下一单元的学习效果[2]。

1.2 操作的简易性

当今的大学生使用最多的移动学习终端还是智能手机, 但智能手机存在屏幕小, 键盘小的缺点, 所以系统的功能性操作尽量的简单明了, 界面设计简单大方。这样学习者在使用移动学习系统时会更方便、快捷。

1.3 可扩展性和兼容性

移动学习系统的设计必须能够满足系统以后的内容扩展, 功能扩展和开放接口扩展等;系统不仅要适应高端的手机, 也要尽量兼容低端的手机, 保证这些手机用户在学校主页下载园地上能够下载移动学习系统客户端实现移动学习。

2 系统架构

图1为移动学习系统的系统构架, 由图1可以看出, 客户端基于HTTP协议访问通过Web服务并获取课程学习资源, 章节练习和模拟测试等信息。Web服务接收客户端要求, 访问数据库和资源库获取客户端需要的资源和信息, 并将处理结果返回给客户端。

移动学习系统采用MCV三层架构开发, 分别是用户层、业务逻辑层、数据操作层。第一层, 用户层主要进行平台界面的设计, 为用户提供欢迎界面;第二层, 业务逻辑层, 采用开源Tomcat搭建Web服务器层;第三层, 数据操作层, 主要负责存储获取数据, 服务器数据库采用My SQL搭建, 用于存储用户信息, 学习资源等。

Android客户端采用自带的一款轻型数据库SQLite3, SQLite3数据库可以保存客户端储存数据量较少的需求。客户端与服务器端两者之间通过HTTP协议进行通信, 数据通信格式使用的是XML或JOSN格式, 数据库采用My SQL5.4关系数据库管理系统, 此关系数据库不是将所有数据统一存放在一个大仓库内, 而是将数据分别保存在不同的表中, 这样做的目的就是增加了处理速度和灵活性[3]。

3 功能分析与实现

平台采用HBuilder为开发工具。HBuilder是DCloud推出的一款支持HTML5的Web开发IDE。通过完整的语法提示和代码输入法, 代码块等, 大幅度提升HTML, JS, CSS的开发效率。同时, 它还包括最全面的语法库和浏览器兼容性数据。HBuilder是当前最快的HTML开发工具, 强大的代码助手帮你快速完成开发, 最全的语法库和浏览器兼容性数据让浏览器碎片化不再头痛。

客户端为运行Android的移动学习系统, 通过Socket HTTP协议访问Web服务器, Web服务器通过访问MYSQL数据库获取相应的资源和信息来响应客户端的请求, 最后服务器将处理数据以JSON文本返回给客户端。Web服务器采用Tomcat7.0, 客户端使用Android4.0.3版本。

针对上述要求, 该平台由内容学习, 反馈练习和学习交流三大模块构成。

3.1 内容学习模块

内容学习模块是3个模块的重中之重。内容学习模块包括3个功能子模块, 分别是:课件学习、视频学习、消息查看;其中:课件学习主要是对教材的学习, 按章节编排好, 呈现给学生。材料有两部分构成:PPT及Word格式。这些教学资料存储在移动系统中, 在没有网络的情况下, 也可以进行移动学习, 不需要从服务器端口重新下载。

视频学习的内容是视频教学, 因为文件比较大, 需要储存在服务器上。当学生进行视频资源学习时, 学生客户端通过URL下载视频到系统中, 采用Android自带的Media Player播放器进行播放, 对于已经播放过一次的视频, 系统可以将其下载到系统缓存区中, 下次播放时就可以直接观看, 不需要再重新下载, 这样就可以节省流量的开销。

消息查看模块显示教师向学生推送的信息, 包括作业及各种提示信息等。

3.2 反馈练习模块

分为章节练习和模块测试两部分。章节练习是按章节向学生呈现各种类型的练习题 (包括选择题, 填空题, 编程题) , 让学生可以跟着课程进度进行练习。帮助学习者更有针对性的练习, 更适合初学者使用。模拟测试是向学生呈现总模拟题, 让学生在期末进行总复习, 查漏补缺。

3.3 学习交流模块

学习交流模块支持学生提出问题并浏览。学生和学生、学生和教师之间都可以进行交流学习。学生可以提出问题, 点击提交按钮, 服务端接收信息, 由教师处理学生提出的问题。

4 主要界面的原型设计

4.1 主界面

进入C语言课程学习系统首页, 就会出现如图2所示的欢迎界面。

4.2 学生学习界面

进入主界面后划动屏幕就可以进入到学生学习界面。

当用户选中“内容学习”后, 在上方出现“课件学习”“视频学习”两个选择项目 (如图3所示) 。选择“课件学习”按钮, 就会出现如图4所示界面。从中可以浏览教师上课讲课使用的教学资料, 以便帮助学生巩固复习, 加深记忆。选择“视频学习”按钮, 就会出现如图5所示的界面。在服务器中存储大量的视频教程, 有全国主讲C语言名师的视频, 也有上课教师所讲的视频, 供学生们查看。

如果进入到学生学习界面, 选择的是“反馈练习”, 就会出现如图6所示的界面。选择“章节练习”和“模拟练习”分别会出现如图7、图8所示的界面。

如果进入到学生学习界面, 选择的是“学习交流”按钮, 就会出现如图9所示的界面。

5 数据库设计

数据库是应用程序不可缺少的一个重要部分。在Android移动学习平台客户端中也需要进行数据的存储和交互, 因此数据库的设计是客户端设计的关键之处。

Android系统中集成了一个轻量级的数据库——SQLite。SQLite数据库只是一个文件, 并不需要安装和启动, 相当于嵌入式的数据库搜索引擎。适合于小存储量的设备中的数据的存取, 非常适合于移动终端这种便携设备。从本质上讲, SQLit的操作方式只是一种更为便捷的文件操作。在应用程序创建或打一个SQLite数据库, 并非是针对真正的数据库进行操作, 而只是对一个文件进行读写。由此可见, 手机中存在的数据库要求数据量和计算复杂度都不能很大, 只能对简单的、轻量级的数据进行存储和读取[4]。

6 结束语

本文针对我校计算机基础教学培养方案把移动学习引入到C语言课程当中, 设计了基于Android移动学习平台。我们可以把移动学习应用到其他课程当中, 将为其他课程教学开辟了一条新的道路。移动学习作为其他教学形式的有益补充, 以满足学习者随时地学习的需要, 也是高校改革的一个研究方向[5]。本文研究的移动学习平台有很多不足的地方, 我们将会继续优化、完善移动学习系统的功能, 为后期开发一个使用便捷, 功能丰富、体验良好、开发简洁的轻量级的移动应用程序提供了一种方法和思路。

参考文献

[1]石雪飞, 原艳霞.高等教育移动学习现状及未来发展[J].中国教育网络, 2015 (4) :35.

[2]汪敏.基于Android系统的智能手机移动学习软件的设计与开发[D].大连:辽宁师范大学, 2014.

[3]吕伟.基于Android的移动学习平台的设计与实现[D].南京:南京师范大学, 2013.

[4]刘宾.基于Android的《计算机文化基础》移动学习系统的设计与开发[D].济南:山东师范大学, 2013.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:信息系统开发方法教程 下一篇:基于SPOC的“Android开发入门”混合式教学模式设计与实践研究