嵌入式系统开发实验报告 本文关键词:嵌入式系统,实验,报告,开发
嵌入式系统开发实验报告 本文简介:计算机学院实验报告课程名称:嵌入式系统开发专业:软件工程班级: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.16fw.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.16fw.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.16fw.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系统中,所有菜单子项