好好学习,天天向上,学科吧欢迎您!
当前位置:首页 >> 最新范文 内容页

嵌入式系统开发实验报告

嵌入式系统开发实验报告 本文关键词:嵌入式系统,实验,报告,开发

嵌入式系统开发实验报告 本文简介:计算机学院实验报告课程名称:嵌入式系统开发专业:软件工程班级:122002学号:201220040224姓名:郑鑫2015年12月19日实验室名称:计算机实验室实验机器号:实验分组:无实验时间:2015年9月25日指导教师:时振涛实验一:Android开发环境搭建及调试一、实验目的和要求1.掌握An

嵌入式系统开发实验报告 本文内容:

计算机学院

课程名称:

嵌入式系统开发

业:

软件工程

级:

122002

号:

201220040224

名:

郑鑫

2015年

12

19

实验室名称:

计算机实验室

实验机器号:

实验分组:

实验时间:

2015年

9月25日

指导教师:

时振涛

实验一:Android

开发环境搭建及调试

一、实验目的和要求

1.

掌握Android环境搭建方法,创建第一个Android应用程序HelloWorld,熟练掌握设置环境参数

2.

了解Android

SDK的目录结构、Android应用程序的程序结构

3.

创建一个AVD,设置Android模拟器,并会操作Android模拟器

4.

使用命令行工具管理模拟器

5.

熟悉Android的调试工具DDMS,掌握Logcat的使用方法。

二、实验原理:

1.

利用电脑搭建安卓开发环境

2.

设置Android模拟器

3.

使用命令行工具管理模拟器

4.

操作Android模拟器

5.

使用运行(Run)模式运行

三、实验设备:

1.

PC计算机

2.

JDK安装包

3.

Eclipse安装包

4.

Android

SDK安装包

5.

ADT插件

四、实验内容

初步了解android

project建立过程以及如何运行模拟器,对android的运行原理进行简单了解;

1.搭建配置Eclipse+Android开发环境

2.创建一个简单的”Helloworld”工程

3.设置Android模拟器:创建新的模拟器

4.用命令行工具执行如下操作实现文件操作和管理模拟器:

l

拷贝文件到手机内存:adb

push

源文件

[/位置/目标文件]

l

拷贝手机文件到电脑上:adb

pull

[源文件]

[目标文件]

l

修正:adb

kill-server

l

重启:adb

start-server

l

把电脑上某个应用(.apk)文件部署到模拟器或手机中:

adb

install

文件名.apk

l

卸载手机上的程序:adb

uninstall

[包名]

l

查看当前的targets:android

list

targets

l

创建一个AVD,要求:名字:Hphone目标平台:Android2.3.2

SD容量:100M位置:c:/test外观:WQVGA

android

create

avd

–target

1

–n

Hphone

–c

100M

–p

c:/test

–s

WQVGA

l

列表显示当前所有AVD:android

list

avd

l

运行刚刚建立的AVD:emulator

–avd

Hphone

l

删除一个已存在的模拟器:android

delete

avd

–n

Hphone

5.使用运行(Run)模式运行:设置“Run

Configuration…”选项

6.练习操作DDMS工具

五、实验步骤和方法

1、下载JDK1.8

2、官方下载Eclipse,解压Eclipse

3、官方下载Android

SDK(工具)并解压

4、运行SDK

Manager.exe,下载需要的SDK版本和API

5、设置Android环境变量

Android_SDK_Home:安装路径

增加自动搜索路径环境变量:

%ANDROID_SDK_Home%/tools:%ANDROID_SDK_Home

%/platform_tools:

6、安装ADT过程:Help->install.newsoforms->add->……->next->

……end。

7、设置Eclipse中的SDK配置

8、创建AVD

9、创建Android应用

10、运行Android应用。

六、实验数据记录:

1.

MainActivity.java:

import

android.app.Activity;

import

android.os.Bundle;

import

android.widget.TextView;

import

android.widget.Button;

public

class

MainActivity

extends

Activity

{

@Override

public

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView

textView=(TextView)findViewById(R.id.textView1);

Button

button

=

(Button)findViewById(R.id.button1);

}}

2.

activity-main.xml

七、测试数据与运行结果及其分析:安装Eclipse,并试验软件是否可用,测试通过,可以用来搭建工程。

八、实验总结体会

这个实验的主要目的是搭建Android

的开发环境,这是学习安卓的第一步,在搭建过程中有很多细节要注意,例如环境变量,还是挺考验细心程度的。在升级Android版本的时候可能会遇到网络问题,需要在avd

manager中进行设置,详细步骤在百度中查阅。

实验室名称:

计算机实验室

实验机器号:

实验分组:

实验时间:

2015.10.8

指导教师:

时振涛

实验二:Activity

生命周期程序设计

一、

实验目的和要求

使学生深入了解Android组件的生命周期中各状态的变化关系。通过程序设计,掌握Activity的三种生命周期:全生命周期、可视生命周期和活动生命周期;每种生命周期中包含的不同的事件回调函数,以及它们的作用和调用顺序,深入理解Activity的生命周期过程。

二、

实验设备

计算机(安装有Android的开发环境Eclipse)

三、

实验内容

1.实现教材中的项目:建立一个新的Android工程,工程名称:Chp02_ActivityLife,包名称:com.NewActivity,实现两个Activity:NewActivity和SecondActivity。通过观察Logcat中的记录,观察Activity生命周期中事件回调函数的执行过程,并根据下图,解释不同的事件回调函数在Activity的三种生命周期的作用如何。

2.建立一个新的Android工程,工程名称:Chp02_ActivityLife2,包名称:com.NewActivity,实现三个Activity:MainActivity、SecondActivity和ThirdActivity。MainActivity界面如下图所示,实现MainActivity到SecondActivity和ThirdActivity的跳转。

将AndroidManifest.XML文件中的多个activity都设置为android.intent.action.MAIN和android.intent.category.LAUNCHER,看看会有什么结果,是谁最先启动的?如果在某个activity中不添加android.intent.action.MAIN再看看会有什么影响吗?从中得出什么结论?

四、

实验步骤和方法

1.

建立新的Android工程。

2.

通过在生命周期函数中添加“System.out.println”或“日志点Log.e”的方法进行调试

3.

为了显示结果易于观察和分析,在LogCat设置过滤器

4.

在程序运行过程,通过点击模拟器上的“返回键”和主键等,在Logcat中观察生命周期中事件回调函数的执行顺序及作用:

onSaveInstanceState()→onPause()→onStop()→onRestart()→onStart()→onResume()

5.

按桌面键

在Logcat中观察生命周期:onPause()->onSaveInstanceState()->onStop();

6.

记录实验结果并分析

五、

实验数据记录

1.MainActivity.java

package

com.sunwei.study;

public

class

MainActivity

extends

AppCompatActivity

implements

View.OnClickListener

{

@Override

protected

void

onStop()

{

super.onStop();

Log.d(“TAG“,“Main-OnStop“);

}

@Override

protected

void

onDestroy()

{

super.onDestroy();

Log.d(“TAG“,“Main-onDestroy“);

}

@Override

protected

void

onStart()

{

super.onStart();

Log.d(“TAG“,“Main-onStart“);

}

@Override

protected

void

onPause()

{

super.onPause();

Log.d(“TAG“,“Main-onPause“);

}

@Override

protected

void

onRestart()

{

super.onRestart();

Log.d(“TAG“,“Main-onRestart“);

}

}

2.SecondActivity.java

package

com.sunwei.study;

public

class

SecondActivity

extends

AppCompatActivity

{

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_second);

}

@Override

protected

void

onStop()

{

super.onStop();

Log.d(“TAG“,“Second-OnStop“);

}

@Override

protected

void

onDestroy()

{

super.onDestroy();

Log.d(“TAG“,“Second-onDestroy“);

}

@Override

protected

void

onStart()

{

super.onStart();

Log.d(“TAG“,“Second-onStart“);

}

@Override

protected

void

onPause()

{

super.onPause();

Log.d(“TAG“,“Second-onPause“);

}

@Override

protected

void

onRestart()

{

super.onRestart();

Log.d(“TAG“,“Second-onRestart“);

}

}

3.AndroidManifest.xml

六、

测试数据和实验结果及其分析

1.

应用初始界面如下图所示。

点击secondActivity按钮控制台输出如下信息;

点击物理菜单的返回键输出如下信息:

按桌面键输出如下信息:

2.应用程序初始界面如下:

七、

实验总结和体会

通过这个实验深刻体会到了Activity的生命周期和各个有关函数的执行顺序,只有掌握了这个才会在编写应用的时候应用自如。另外通过对AndroidMainfest.xml文件中intent-filter属性的设置了解了这个属性对应用的重要性。

实验室名称:

计算机实验室

实验机器号:

实验分组:

实验时间:

2015.10.19

指导教师:

时振涛

实验三:Intent、Activity应用

一、

实验目的和要求

本次实验的目的是让大家熟悉Intent和Activity的使用。了解Intent的组成、功能、解析机制和调用方法。掌握Intent传递数据的方法。

二、

实验原理

1.

通过Intent实现Activity之间的跳转;

在Android系统中,应用程序一般都有多个Activity,

Intent可以帮助实现不同Activity之间的切换和数据传递。Activity的跳转启动的方式主要有两种,分为显示启动和隐式启动。

Activity之间信息传递最基本的实现方式是使用Intent,在使用Intent进行Activity之间的跳转时,通常有三种Intent跳转方式,即:不带参数的跳转、带参数的跳转以及带返回值的跳转,也可以归纳为两种最常见的情形:一种是获取子Activity返回值,另一种传递消息给子Activity。

2.

通过Bundle在Activity之间传递参数

三、

实验设备:计算机(安装有Android的开发环境Eclipse)

四、

实验内容

1、

建立一个新的Android工程,工程名称:Chp02_IntentProject,Activity名称:MainActivity,SecondActivity,MainActivity的界面如图a,实现:1)当网络可用时提示“网络可用”,当网络不可用时,提示信息“网络不可用”,并跳转到网络设置界面,如图b。2)第一个按钮通过Intent显式启动SecondActivity。3)第二个按钮通过设置Intent的动作,即setAction(intent.ACTION_VIEW)打开百度网页;4)第三个按钮通过Intent隐式启动OtherActivity。5)第四个按钮通过设置Intent的动作,即setAction(intent.ACTION_SENDTO)实现发送短信的功能。

2、

SecondActivity的界面如图c,要求点击“百度”可以转入网页,下面显示的网址、邮箱和电话同样可以打开链接。

a

b

c

实验代码见“实验数据记录”,并将其中“……”里的内容补充完整,将实验要求功能实现。然后试着改变按钮监听方式,实现其他方法的监听方式,并将代码和结果附在实验内容里。

3、

按照教材中的内容建立工程NeuChp02_IntentExchangeMessage,实现三个Activity,分别为MainActivity、SecondActivity和ThirdActivity,其中MainActivity为父Activity,获取SecondActivity的返回值,传递信息给ThirdActivity,实现不带参数的跳转、带参数的跳转以及带返回值的跳转。

五、

实验步骤和方法

1.

根据实验要求建立工程

2.

按照实验内容编写代码

3.

运行程序并调试

4.

改变程序中组件的属性观察它们的变化

5.

记录实验结果并分析

六、

实验数据记录

源代码:

1.布局文件:

2.MyMainActivity代码

public

class

MainActivity

extends

AppCompatActivity

implements

View.OnClickListener

{

private

TextView

textView;

private

Button

button1;

private

Button

button2;

private

Button

button3;

private

Button

button4;

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView

=

(TextView)

findViewById(R.id.textView);

button1

=

(Button)

findViewById(R.id.button1);

button2

=

(Button)

findViewById(R.id.button2);

button3

=

(Button)

findViewById(R.id.button3);

button4

=

(Button)

findViewById(R.id.button4);

button1.setOnClickListener(this);

button2.setOnClickListener(this);

button3.setOnClickListener(this);

button4.setOnClickListener(this);

ConnectivityManager

connectivityManager

=

(ConnectivityManager)

getSystemService(CONNECTIVITY_SERVICE);

NetworkInfo

networkInfo

=

connectivityManager.getActiveNetworkInfo();

if

(networkInfo

!=

null

}

else

{

Toast.makeText(this,“网络不可用“,Toast.LENGTH_LONG).show();

Intent

intent

=

new

Intent();

intent.setClassName(“com.android.settings“,“com.android.settings.Settings“);

startActivity(intent);

}

}

@Override

public

boolean

onCreateOptionsMenu(Menu

menu)

{

//

Inflate

the

menu;

this

adds

items

to

the

action

bar

if

it

is

present.

getMenuInflater().inflate(R.menu.menu_main,menu);

return

true;

}

@Override

protected

void

onSaveInstanceState(Bundle

outState)

{

super.onSaveInstanceState(outState);

Log.d(“TAG“,“Main-onSaveInstanceState“);

}

@Override

public

void

onClick(View

v)

{

if

(v.getId()

==

R.id.button1)

{

Intent

intent

=

new

Intent(this,SecondActivity.class);

startActivity(intent);

}

if

(v.getId()

==

R.id.button2)

{

Intent

intent

=

new

Intent(Intent.ACTION_VIEW,Uri.parse(“http://www.xueke8.com“));

startActivity(intent);

}

if

(v.getId()

==

R.id.button3)

{

Intent

intent

=

new

Intent();

intent.setAction(“third“);

startActivity(intent);

}

if

(v.getId()

==

R.id.button4)

{

Intent

intent=new

Intent();

intent.setAction(Intent.ACTION_SENDTO);

intent.addCategory(“android.intent.category.DEFAULT“);

intent.setData(Uri.parse(“sms:10016“));

startActivity(intent);

}

}

}

2.

OtherActivity代码

public

class

OtherActivity

extends

Activity

{

Button

bt1;

ImageButton

bt;

EditText

et;

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

//

TODO

Auto-generated

method

stub

super.onCreate(savedInstanceState);

setContentView(R.layout.twomain);

TextView

textview1=(TextView)findViewById(R.id.textView1);

TextView

textview2=(TextView)findViewById(R.id.textView2);

bt=(ImageButton)findViewById(R.id.imagebutton1);

et=(EditText)findViewById(R.id.editText1);

bt1=(Button)findViewById(R.id.button1);

String

html=“I

love

android“;

html+=“I

love

android“;

html+=“百度“;

CharSequence

chars=

Html.fromHtml(html);

textview1.setText(chars);

textview1.setMovementMethod(LinkMovementMethod.getInstance());

//点击的时候产生超链接

String

textv=“我的URL:http://www.xueke8.com/n“;

textv+=“我的email:[email protected]/n“;

textv+=“我的电话:+86

0351-2569332“;

textview2.setText(textv);

textview2.setMovementMethod(LinkMovementMethod.getInstance());

OnClickListener

listeners=new

OnClickListener()

{

@Override

public

void

onClick(View

v)

{

//

TODO

Auto-generated

method

stub

switch

(v.getId())

{

case

R.id.button1:

et.setText(“我按下了Button按钮!“);

return;

case

R.id.imagebutton1:

et.setText(“我按下了ImageButton按钮!“);

return;

}

}

};

bt1.setOnClickListener(listeners);

bt.setOnClickListener(listeners);

}

}

4.

SecondActivity代码

public

class

SecondActivity

extends

Activity

{

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

//

TODO

Auto-generated

method

stub

super.onCreate(savedInstanceState);

setContentView(R.layout.secondmain);

TextView

textview1

=

(TextView)

findViewById(R.id.textView1);

TextView

textview2

=

(TextView)

findViewById(R.id.textView2);

String

html=“I

love

android“;

html+=“I

love

android“;

html+=“百度“;

CharSequence

chars=

Html.fromHtml(html);

textview1.setText(chars);

textview1.setMovementMethod(LinkMovementMethod.getInstance());

//点击的时候产生超链接

String

textv=“我的URL:http://www.xueke8.com/n“;

textv+=“我的email:[email protected]/n“;

textv+=“我的电话:+86

0351-2569332“;

textview2.setText(textv);

textview2.setMovementMethod(LinkMovementMethod.getInstance());

}

}

5.AndroidManifests.xml

七、

测试数据和实验结果及其分析

八、实验总结和体会

这个实验中主要学习的是Android中的重要组件Intent,其中包括Intent的显示调用、隐式调用和数据传递,在这次实验中遇到了很多课堂上没有注意的问题,通过查阅资料和请教老师一个个的都解决了,这次实验不仅练习了老师讲的知识了,而且在编译器上调试错误的的能力也有了提高。

实验室名称:

计算机实验室

实验机器号:

实验分组:

实验时间:

2015.10.28

指导教师:

时振涛

实验四:Android

用户界面设计(一)

一、

实验目的和要求

本实验的目的是使学生深入了解Android程序框架结构、了解和掌握Android界面设计和界面编程。通过程序设计,掌握常用界面控件、菜单、以及界面事件的响应。

二、

实验原理

1、Menu类

一个Men对象代表一个菜单。在Menu对象中可以添加菜单项MenuItem,也可以添加子菜单SubMenu。

2、MenuItem类

一个MenuItem对象代表一个菜单项,通过Menu类的add()方法,可以将MenuItem加入到Menu中。

3、SubMenu类继承于Menu类,一个SubMenu对象代表一个子菜单。

4、使用Adapter适配器来进行基本的ListView设计。

三、

实验设备:计算机(安装有Android的开发环境Eclipse)

四、

实验内容:

完成Android应用程序建立及界面处理技术,包括以下内容:

l

Android应用层程序建立

l

界面布局及控件添加

l

菜单添加——选项菜单及上下文菜单

l

消息处理

l

Array

Adapter使用

[实现提示]

1.建立Android应用程序框架

2.添加控件——

EditText负责输入“工作项目”;ListView负责显示“工作列表”

3.定义ArrayList,并通过ArrayAdapter将ListView与ArrayList相关联

4.添加选项菜单,(参见图1和图2)

a.

当EditText控件Visible时,有两个菜单项,“添加项目”和“取消添加”。其中添加项目将EditText内容添加到ListView中,“取消项目”将EditText隐藏

b.

当EditText控件隐藏时,有一个菜单项,及“添加菜单”项,当按下该菜单时,EditText由隐藏状态改为显示状态

5.为EditText添加按键事件(D-pad键)监听器,当按下该键时,EditText内容添加到“工作列表”中

6.

为ListView添加上下文菜单,当长按ListView某一项时,跳出上下文菜单,提示用户可以删除该项目

选项菜单

D-Pad

EventCode:

KEYCODE_DPAD_CENTER

EventType:

ACTION_DOWN

ListView

EditText

图1

ListView注册上下文菜单,长按listView某一项时,弹出菜单,用户可以删除该项目

点击“Cancel”后,EditText控件消失。再点击菜单键,仅有“AddNewItem”菜单项

五、

实验步骤和方法

1、建立Android工程,其中

工程名称:TodoList。

2、工程建立完毕后,进行相应界面设计,再编写Java文件

1)添加控件EditText,负责输入工作项目,EditText控件命名为EditText01,在XML文件中(/res/layout/main.xml)中的代码如下:

ToDoListActivity.java文件中,引用XML文件中建立的EditText。需要在代码中引入android.widget.EditText。findViewById()函数能够通过ID引用界面上的任何控件,只要该控件在XML文件中定义过ID即可。setHint()函数用来显示提示信息。setText()函数用来设置EditText所显示的内容为空。代码如下:

private

EditText

editText;

editText=(EditText)findViewById(R.id.EditText01);

editText.setHint(“请输入工作项目“);

editText.setText(““);

2)添加控件ListView

负责显示工作列表:在XML文件中(/res/layout/main.xml)中的代码如下:

3)ToDoListActivity.java文件中,引用XML文件中建立的ListView,首先为ListView创建适配器,并添加ListView中所显示的内容。代码如下:

private

ListView

listView;

private

List

list;

listView=(ListView)findViewById(R.id.ListView01);

list=new

ArrayList();

list.add(“New

To

Do

Item“);

ArrayAdapteradapter=newArrayAdapter(this,android.R.layout.simple_list_item_1,list);

listView.setAdapter(adapter);

4)添加控件Option

Menu,为了能够在应用程序中使用选项菜单,必须重载Activity的onCreateOptionsMenu()函数。该函数在用户首次使用选项菜单时被调用,一般用来初始化菜单子项的相关内容,包括设置菜单子项自身的子项ID和组ID,菜单子项显示的文字和图片等信息。

final

static

int

MENU_ADD_NEW_ITEM=Menu.FIRST;

final

static

int

MENU_Cancel=Menu.FIRST+1;

public

boolean

onCreateOptionsMenu(Menu

menu)

{

menu.add(23,MENU_ADD_NEW_ITEM,0,“AddNewItem“).

setIcon(android.R.drawable.ic_input_add);

menu.add(34,MENU_Cancel,1,“Cancle“).setIcon(android.R.drawable.ic_delete);

menu1=menu;

return

true;}

5)在Android系统中,所有菜单子项

TAG标签: