资源描述
计算机学院
实 验 报 告
课程名称: 嵌入式系统开发
专 业: 软件工程
班 级: 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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
package="com.example.activity_demo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.activity_demo.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
七、测试数据与运行结果及其分析:安装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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
package="com.sunwei.study" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
</activity>
<activity
android:name=".ThirdActivity"
android:label="@string/title_activity_third" >
</activity>
</application>
</manifest>
六、 测试数据和实验结果及其分析
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.布局文件:
<LinearLayout xmlns:android="
xmlns:tools="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.testhello.MyMainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="激活显示意图" >
</Button>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click1"
android:text="激活网页(隐式意图1)" >
</Button>
<Button
……>
</Button>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click4"
android:text="发送短信" >
</Button>
</LinearLayout>
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 && 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.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(""));
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="<font color='red'>I love android</font><br>";
html+="<font color='#0000ff'><big><i>I love android</i></big></font><p>";
html+="<big><a href=''>百度</a></big>";
CharSequence chars= Html.fromHtml(html);
textview1.setText(chars);
textview1.setMovementMethod(LinkMovementMethod.getInstance());
//点击的时候产生超链接
String textv="我的URL:\n";
textv+="我的email:abcd@\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="<font color='red'>I love android</font><br>";
html+="<font color='#0000ff'><big><i>I l
展开阅读全文