移动开发技术本科生产实习报告.docx

上传人:b****2 文档编号:14559701 上传时间:2023-04-23 格式:DOCX 页数:45 大小:1.04MB
下载 相关 举报
移动开发技术本科生产实习报告.docx_第1页
第1页 / 共45页
移动开发技术本科生产实习报告.docx_第2页
第2页 / 共45页
移动开发技术本科生产实习报告.docx_第3页
第3页 / 共45页
移动开发技术本科生产实习报告.docx_第4页
第4页 / 共45页
移动开发技术本科生产实习报告.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

移动开发技术本科生产实习报告.docx

《移动开发技术本科生产实习报告.docx》由会员分享,可在线阅读,更多相关《移动开发技术本科生产实习报告.docx(45页珍藏版)》请在冰豆网上搜索。

移动开发技术本科生产实习报告.docx

移动开发技术本科生产实习报告

 

本科生产实习报告

(2016—2017学年第二学期)

 

姓名:

 ****

学号:

 **********

年级:

*****

专业:

 ************

系室:

**************

 

2017年7月1日

 

 

1移动开发技术入门

1.1单元1熟悉Java软件及基本操作

1.1.1功能介绍

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。

Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

Java的开发需要安装JDK,编程软件有Eclipse、NetBeans、IntelliJIDEA、MyEclipse、EditPlus,其中Eclipse是一个开放代码源的、基于Java的可扩展开发平台,我们在学习Java的过程中就是应用此软件。

当编辑并运行一个Java程序时,需要同时涉及到Java编程语言、Java类格式文件、Java虚拟机、Java应用程序接口四个方面。

使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类,通过调用类(这些类实现了JavaAPI)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的JavaAPI调用。

在Java中有8种数据类型来储存数值、字符和布尔值。

关于Java开发我们用的是Eclipse,相关基本操作如下:

运行Eclipse软件,点击右上角的文件,进入页面点击新建,然后点击“java项目”,进入页面后,填写“英文项目名称”,然后点“下一步”,进入页面后点击“完成”,在右侧的“资源管理包”中寻找刚才建立的工程,找到“scr”,单击右键点“新建”,选择“包”,然后你可以更改包的名称,也可以不改,关键看你这个工程的大小,如果有很多个包当然建议改名咯,然后再在刚才建的包那里单击右键找“类”的图标,然后选择,进入页面填写你要建的类的名称,点击完成,最后在页面里编码,然后运行出错就调试直到成功。

本次Java的实习主要是将Java应用与移动开发,关键点在于IO流和网络访问。

下面对于本次对Java的学习过程做详细介绍。

1.1.2设计/学习/调试过程

JavaIO流是一种计算机用语。

IO流按流的方向可分为输入流和输出流;按流的数据单位不同分为字节流和字符流;按流的功能不同分为节点流和处理流。

一般我们称字符流、字节流、转换流和缓冲流。

IO流有四大抽象类,有Reader、Writer和InputStream、OutputStream。

流的本质也是对文件的处理,我们循序渐进一步一步从文件将到流去。

我们可以通过流对文件进行修改复制。

java处理文件的类File,java提供了十分详细的文件处理方法。

字节流有输入流和输出流。

根据文件路径获取输入输出流“InputStreamin=newFileInputStream(filein);OutputStreamout=newFileOutputStream(file);”每次用完后都要进行流的关闭,操作语句是“in.close();out.close();”。

字节流的完整程序如下:

publicclassIoDemo{

publicstaticvoidmain(String[]args){

try{

Filefilein=newFile("E:

//a.txt");

Filefile=newFile("E:

//a_copy.txt");

if(!

file.exists()){

file.createNewFile();}

InputStreamin=newFileInputStream(filein);

OutputStreamout=newFileOutputStream(file);

byte[]bs=newbyte[1024];

inta=0;

while((a=in.read(bs))!

=-1){

out.write(bs,0,a);}

System.out.println("复制完成");

in.close();

out.close();

}catch(Exceptione){

System.out.println("出现异常了");

e.printStackTrace();}}}

字符流用到Reader和Writer进行读写文件,操作语句为“Readerin=newFileReader(file);Writerout=newFileWriter(fileout);”,完成后同样要进行关闭流。

完整程序如下:

publicclassIoDemo2{

publicstaticvoidmain(String[]args){

try{

Filefile=newFile("E:

//a.txt");

Filefileout=newFile("E:

//a_copy.txt");

if(!

fileout.exists()){

file.createNewFile();}

Readerin=newFileReader(file);

Writerout=newFileWriter(fileout);

char[]cs=newchar[1024];

inta=0;

while((a=in.read(cs))!

=-1){

out.write(cs,0,a);}

System.out.println("复制完成");

in.close();

out.close();

}catch(Exceptione){

e.printStackTrace();}}}

高级流分为转换流和缓冲流,转换流主要是进行一些字节与字符的转换传输,主要用到了FileOutputStream和OutputStremWriter。

完整操作程序如下:

publicclassIoDemo3{

publicstaticvoidmain(String[]args){

try{

Filefile=newFile("E:

//a.txt");

FileOutputStreamfos=newFileOutputStream(file);

OutputStreamWriterosw=newOutputStreamWriter(fos);

osw.write("您好!

");

System.out.println("写入完成");

osw.close();

}catch(IOExceptione){

//TODO自动生成catch块

e.printStackTrace();}}}

缓冲流主要用到BufferedInputStream、BufferedOutputStream,主要操作程序如下:

publicclassIoDemo4{

publicstaticvoidmain(String[]args){

try{

//输入输出缓冲区

BufferedInputStreambin=newBufferedInputStream(new

FileInputStream(newFile("E:

//a.txt")));

BufferedOutputStreambos=newBufferedOutputStream(new

FileOutputStream(newFile("E:

//a_buffered.txt")));

bin.read();

bos.wait();

}catch(FileNotFoundExceptione){

//TODO:

handleexception

e.printStackTrace();}}}

HTTP协议可能是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。

在JDK的包中已经提供了访问HTTP协议的基本功能:

HttpURLConnection。

HttpURLConnection是Java的标准类,HttpURLConnection继承自URLConnection,可用于向指定网站发送GET请求、POST请求。

openConnection()方法会创建一个URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。

类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法。

openConnection()方法既能读取又能发送数据。

我们主要编写了get请求进行网络访问,下面是一个访问XX获取其HTML文档的主要程序:

publicclassHttpUtil{

publicstaticStringget(Stringurl){

HttpURLConnectionconn=null;

try{

URLu=newURL(url);

conn=(HttpURLConnection)u.openConnection();

//建立连接

conn.connect();

//获取相应状态码

intrecode=conn.getResponseCode();

if(recode==200){//连接成功

InputStreamin=conn.getInputStream();

BufferedReaderreader=newBufferedReader(newInputStreamReader(in,"UTF-8"));

Stringstr=null;

StringBuffersb=newStringBuffer();

while((str=reader.readLine())!

=null){

sb.append(str).append(System.getProperty("line.separator"));}

reader.close();

if(sb.toString().length()==0){returnnull;}

returnsb.toString().substring(0,sb.toString().length()

System.getProperty("line.separator").length());}

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(conn!

=null){conn.disconnect();}}

returnnull;}

publicstaticvoidmain(String[]args){

Stringstr=HttpUtil.get("

System.out.println(str);}}

1.1.3结果展示和讨论

(1)字节流与字符流区别:

图1IO流分析图

字节流主要是操作byte类型数据,以byte数组为准,主要操作类就是OutputStream、InputStream。

OutputStream是整个IO包中字节输出流的最大父类,此类是一个抽象类,如果想要使用此类的话,则首先必须通过子类实例化对象,那么如果现在要操作的是一个文件,则可以使用:

FileOutputStream类。

通过向上转型之后,可以为OutputStream实例化。

与OutputStream类一样,InputStream本身也是一个抽象类,必须依靠其子类,如果现在是从文件中读取,就用FileInputStream来实现。

字符流,在程序中一个字符等于两个字节,那么java提供了Reader、Writer两个专门操作字符流的类。

Writer本身是一个字符流的输出类,此类本身也是一个抽象类,如果要使用此类,则肯定要使用其子类,此时如果是向文件中写入内容,所以应该使用FileWriter的子类。

Reader是使用字符的方式从文件中取出数据,Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。

此外,字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。

字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

(2)Java-get与post请求的区别:

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?

”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。

另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。

Post的所有操作对用户来说都是不可见的。

4、Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。

5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

6、Get是Form的默认方法。

使用Post传输的数据,可以通过设置编码的方式正确转化中文;而Get传输的数据却没有变化。

1.2单元2…Android

1.1.1功能介绍

Android是一种以Linux与JAVA为基础的开放源代码操作系统,主要使用于便携设备。

中国大陆地区较多人使用“安卓”。

Android操作系统最初由AndyRubin开发,被谷歌收购后则由Google公司和开放手机联盟领导及开发,主要支持手机与平板。

Android7.0Nougat(牛轧糖):

正式版本在2016年8月22日发布,是由Google开发的Android操作系统的第7个主要版本,正是我们本次学习应用的操作系统。

AndroidStudio是一个全新的Android开发环境,基于IntelliJIDEA.类似EclipseADT,AndroidStudio提供了集成的Android开发工具用于开发和调试,是我们本次学习所应用的开发工具。

该工具的安装较为麻烦,不过网上都有相关的教程,非常详细。

本节学习的目的主要是熟悉Android移动开发,为后续的开发做准备。

1.1.2设计/学习/调试过程

(1)第一次打开软件时,直接创建项目,然后根据提示选择合适的配置。

创建完成后连网更新SDK,下载需要的操作系统版本,SDK占用内存较大没必要全部下载。

下面是成功创建项目后的界面:

图2成功创建Demo项目

(2)开发项目时主要主要用到layout、mipmap、java等几个项目。

另外一个重要文件就是AndroidManifest.xml,这里定义了项目的打包名称;项目的标题、主题、图标以及所有的活动项,各种访问权限的设置等等都在这里设置。

图3项目栏介绍

(3)MainActivity一般为创建一个Android工程时默认的主页面,主页面的内容为一个TextView控件(HelloWorld!

)。

在AndroidManifest.xml文件中的配置:

android:

name="com.lzm.collection.MainActivity"

android:

label="@string/app_name">

name="android.intent.action.MAIN"/>

name="android.intent.category.LAUNCHER"/>

当你删除MainActivity时需要删除或修改这些配置,当然有时候也需要加入你创建的activity。

 

1.1.3结果展示和讨论

(1)该登陆界面主要用到了LinearLayout、Textview、EditText、Button、ListView和ImageView。

图4登录界面展示

LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。

因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度)。

LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的右对齐、中间对齐或者左对齐)。

常用属性:

wrap_content包裹实际文本内容match_parent当前控件铺满父类容器fill_parent当前空间铺满父类容器,id—控件id、layout_width—控件宽度、layout_height—空间高度text—控件文本、textSize—控件大小、extColor—控件颜色、background—控件背景、hint—输入提示文本、inputType—输入文本类型、EditText是输入文本框。

(2)上图输入预先设置好的账号和密码可进入跳转界面,我做了一个简单的设备列表界面(图5)。

图5跳转后界面

该界面还用到了自定义适配器,用于更新产信息(由于退案原因不能看到设备列表下的各个item项,及产品介绍),android中基本的适配器BaseAdapter是一个抽象类,而它非常懒,基本没有什么方法去可以直接使用的,主要有SimpleAdapter和ArrayAdapter,所以我们在实际开发中如果需要实现各种各样的适配器样式,则需要自定义适合自己的适配器,也就是说需要继承BaseAdapter。

(3)layout_gravity、padding、gravity、margin的区别:

gravity用于设置组件或者子控件内部的对齐方式,例如:

button内部的文字对齐方式;layout_gravity用于设置组件在layout容器中的对齐方式,例如:

button在整个布局总的位置;padding填充的意思,描述控件内容与控件的相对位置;margin用来描述控件间的位置关系。

1.3单元3移动应用设计

1.1.1功能介绍

随着技术的不断发展,现在出现了一个新词“智能家居”。

智能家居(英文:

smarthome,homeautomation)是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。

本节我们将以家具常用的节能灯为例,做一个智能灯。

该智能灯可以通过移动端通过软件控制,使用户可以远程控制家里的灯的情况,可以调节亮度及其颜色,移动端界面简单大方易于操作,可以与智能灯很好的进行信息通信,能够最大程度的方便用户。

该项目完成后,可以应用到其他的多项家居用品,使用户未进家门便可以控制空调,热水器,入门便可以感受到清凉,洗上热水澡,缓解一天的疲劳。

1.1.2设计/学习/调试过程

该项目分为软件布局设计,控制程序设计及通信控制程序。

(1)软件界面设计,源程序见1.1.3

图6控制界面

 

图7项目列表

1.1.3结果展示和讨论

打开软件后,首先进入设备列表界面(图7),然后点击界面中部的灯泡,会进入图6界面,点击开灯按钮灯泡会亮,界面中的灯泡周围会有形状射线显示(代表灯亮),下方的红、绿、蓝三个滑动条可以改变灯泡的颜色,点击关灯按钮可关灯。

1.4智能灯项目程序

布局脚本device_item

xmlversion="1.0"encoding="utf-8"?

>

android="

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

orientation="horizontal"

android:

background="@mipmap/img_control">

android:

id="@+id/img_lamp"

android:

layout_width="60dp"

android:

layout_height="60dp"

android:

src="@mipmap/light_off"

android:

layout_gravity="center_vertical"

android:

layout_marginLeft="10dp"/>

android:

layout_width="match_parent"

android:

layout_height="match_parent"

android:

orientation="vertical"

android:

gravity="center_vertical"

andr

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

当前位置:首页 > 表格模板 > 合同协议

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

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