1、 计算机学院 实 验 报 告 课程名称: 嵌入式系统开发 专 业: 软件工程 班 级: 122002 学 号: 201220040224 姓 名: 郑鑫 2015年 12 月 19 日 实验室名称: 计算机实验室 实验机器号: 实验分组: 无 实验时间: 2015年 9月25日 指导教师: 时振涛 实验一:Android 开发环境搭建及调试 一、实验目的和要求
2、 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)模式运行 三、实验设备:
3、 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 [源
4、文件] [目标文件] 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
5、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、设置
6、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.Activit
7、y; 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_
8、main);
TextView textView=(TextView)findViewById(R.id.textView1);
Button button = (Button)findViewById(R.id.button1);
}}
2. activity-main.xml
9、droid:versionName="1.0" >
10、 >
12、名称: 计算机实验室 实验机器号: 实验分组: 无 实验时间: 2015.10.8 指导教师: 时振涛 实验二:Activity 生命周期程序设计 一、 实验目的和要求 使学生深入了解Android组件的生命周期中各状态的变化关系。通过程序设计,掌握Activity的三种生命周期:全生命周期、可视生命周期和活动生命周期;每种生命周期中包含的不同的事件回调函数,以及它们的作用和调用顺序,深入理解Activity的生命周期过程。 二、 实验设备 计算机(安装有Android的开发
13、环境Eclipse) 三、 实验内容 1.实现教材中的项目:建立一个新的Android工程,工程名称:Chp02_ActivityLife,包名称:com.NewActivity,实现两个Activity:NewActivity和SecondActivity。通过观察Logcat中的记录,观察Activity生命周期中事件回调函数的执行过程,并根据下图,解释不同的事件回调函数在Activity的三种生命周期的作用如何。 2.建立一个新的Android工程,工程名称:Chp02_ActivityLife2,包名称:com.NewActivity,实现三个Activity:MainAc
14、tivity、SecondActivity和ThirdActivity。MainActivity界面如下图所示,实现MainActivity到SecondActivity和ThirdActivity的跳转。 将AndroidManifest.XML文件中的多个activity都设置为android.intent.action.MAIN和android.intent.category.LAUNCHER,看看会有什么结果,是谁最先启动的?如果在某个activity中不添加android.intent.action.MAIN再看看会有什么影响吗?从中得出什么结论? 四、 实验步骤和方法 1
15、 建立新的Android工程。 2. 通过在生命周期函数中添加“System.out.println”或“日志点Log.e”的方法进行调试 3. 为了显示结果易于观察和分析,在LogCat设置过滤器 4. 在程序运行过程,通过点击模拟器上的“返回键”和主键等,在Logcat中观察生命周期中事件回调函数的执行顺序及作用: onSaveInstanceState()→onPause()→onStop()→onRestart()→onStart()→onResume() 5. 按桌面键 在Logcat中观察生命周期:onPause()->onSaveInstanceState()->on
16、Stop(); 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"); } @Over
17、ride 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.
18、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 {
19、 @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"); }
20、 @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() {
21、 super.onPause();
Log.d("TAG", "Second-onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("TAG", "Second-onRestart");
}
}
3.AndroidManifest.xml
23、l="@string/app_name" >
25、应用初始界面如下图所示。 点击secondActivity按钮控制台输出如下信息; 点击物理菜单的返回键输出如下信息: 按桌面键输出如下信息: 2.应用程序初始界面如下: 七、 实验总结和体会 通过这个实验深刻体会到了Activity的生命周期和各个有关函数的执行顺序,只有掌握了这个才会在编写应用的时候应用自如。另外通过对AndroidMainfest.xml文件中intent-filter属性的设置了解了这个属性对应用的重要性。 实验室名称: 计算机实验室 实验机器号:
26、 实验分组: 无 实验时间: 2015.10.19 指导教师: 时振涛 实验三:Intent、Activity应用 一、 实验目的和要求 本次实验的目的是让大家熟悉Intent和Activity的使用。了解Intent的组成、功能、解析机制和调用方法。掌握Intent传递数据的方法。 二、 实验原理 1. 通过Intent实现Activity之间的跳转; 在Android系统中,应用程序一般都有多个Activity, Intent可以帮助实现不同Activity之间的切换和数据传递。Activity的跳转启动的方式主要有
27、两种,分为显示启动和隐式启动。 Activity之间信息传递最基本的实现方式是使用Intent,在使用Intent进行Activity之间的跳转时,通常有三种Intent跳转方式,即:不带参数的跳转、带参数的跳转以及带返回值的跳转,也可以归纳为两种最常见的情形:一种是获取子Activity返回值,另一种传递消息给子Activity。 2. 通过Bundle在Activity之间传递参数 三、 实验设备:计算机(安装有Android的开发环境Eclipse) 四、 实验内容 1、 建立一个新的Android工程,工程名称:Chp02_IntentProject,Activity名称:
28、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、 Secon
29、dActivity的界面如图c,要求点击“百度”可以转入网页,下面显示的网址、邮箱和电话同样可以打开链接。 a b c 实验代码见“实验数据记录”,并将其中“……”里的内容补充完整,将实验要求功能实现。然后试着改变按钮监听方式,实现其他方法的监听方式,并将代码和结果附在实验内容里。 3、 按照教材中的内容建立工程NeuChp02_IntentExchangeMessage,实现三个Activity,分别为MainActivity、SecondActivity和ThirdActivity,其
30、中MainActivity为父Activity,获取SecondActivity的返回值,传递信息给ThirdActivity,实现不带参数的跳转、带参数的跳转以及带返回值的跳转。
五、 实验步骤和方法
1. 根据实验要求建立工程
2. 按照实验内容编写代码
3. 运行程序并调试
4. 改变程序中组件的属性观察它们的变化
5. 记录实验结果并分析
六、 实验数据记录
源代码:
1.布局文件:
31、 android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.testhello.MyMainActivity" >
32、on
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="激活显示意图" >
35、n 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);
36、 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
37、this); button3.setOnClickListener(this); button4.setOnClickListener(this); ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if
38、networkInfo != null && networkInfo.isConnected()) { Toast.makeText(this, "网络可用", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "网络不可用", Toast.LENGTH_LONG).show(); Intent intent = new Intent(); intent.setClassName("com.android.s
39、ettings", "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_mai
40、n, 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.i
41、d.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("")); startActivity(intent); }
42、 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)
43、 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; @Ove
44、rride 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);
45、 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+=" 46、f=''>百度
47、extview2.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按钮!");
48、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(Bun
49、dle 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 l






