1、基于android开发实验报告总结 组员: 指导老师:2016.12.15目录实验一 Android开发环境的搭建31 实验目的及要求32 实验设备(环境)及要求33 实验内容34 实验步骤35 实验核心代码(关键代码),及调试中的问题46 实验的运行结果及分析83 实验设备(环境)及要求9实验三 GUI创建套件Widget的使用171 实验目的及要求172 实验设备(环境)及要求173 实验内容184 实验步骤185 实验核心代码(关键代码),及调试中的问题186 实验的运行结果及分析27实验四 SQLite应用281 实验目的及要求282 实验设备(环境)及要求293 实验内容294 实验
2、步骤295 实验核心代码(关键代码),及调试中的问题296 实验的运行结果及分析40实验一 Android开发环境的搭建1 实验目的及要求1.搭建Eclipse+Android开发平台2.创建简单的Android应用程序3.创建Activity并利用intent的实现Activity的跳转2 实验设备(环境)及要求1) PC计算机 2) JDK安装包 3) Eclipse安装包 4) Android SDK安装包 5) ADT插件 3 实验内容1)搭建Eclipse+Android开发环境2)创建一个简单的”hello world”工程3)创建两个Activity,实现简单的Activity之
3、间的参数传递4 实验步骤1) 下载安装JDK 1.6,配置环境变量,如果所示。5 实验核心代码(关键代码),及调试中的问题1.MainActivity.javapackage com.example.app;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.Button;public class MainActivity extends
4、Activity private Button button;private myapp ma; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() Overridepublic
5、void onClick(View v) / TODO 自动生成的方法存根ma=(myapp)getApplication();ma.setName(张天爱);Intent intent=new Intent(MainActivity.this,other.class);startActivity(intent);); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInfla
6、ter().inflate(R.menu.main, menu); return true; 2.myapp.javapackage com.example.app;import android.app.Application;import android.os.Bundle;public class myapp extends Application private String name;public String getName() return name;public void setName(String name) this.name = name;Overridepublic v
7、oid onCreate() / TODO 自动生成的方法存根super.onCreate();setName(邓超);other.javapublic class other extends Activity private TextView textview;private myapp ma;Overrideprotected void onCreate(Bundle savedInstanceState) / TODO 自动生成的方法存根super.onCreate(savedInstanceState);textview=(TextView)this.findViewById(R.id
8、.text);ma=(myapp)getApplication();textview.setText(-appname+ma.getName();6 实验的运行结果及分析实验二 渐进Android UI设计1实验目的掌握各Android布局设计,熟悉各Android资源、控件使用。2 实验要求按要求设计一个Android活动窗体,使用一定的技术,实现其功能。3 实验设备(环境)及要求1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 4 实验内容设计一线型布局窗口,根据输入的身高和体重,计算BMI值。其中所用到的字符串和数值尽可能预先建
9、立资源。(1) 进入Eclipse开发环境单击桌面上Eclipse快捷键,打开Eclipse环境。(2) 创建项目单击“File”菜单下的“New”菜单项中的“Android Application Project”子菜单项,在“New Android Application”对话框中的Application Name文本框中输入app2_1,单击Next按钮,在出现的新的对话框中都单击Next按钮,最后一个对话框单击Finish按钮,进入设计窗体。(3) 新建字符串资源单击左边列表中res文件夹,单击其下的values文件夹,双击其下的strings.xml文件,在右边的Android Re
10、sources对话框中单击Add按钮,选择string,在Name和Value*编辑框中输入字符串名和字符串值,如图或者直接在单击“string.xml”标签,在程序编辑器中直接输入黄色部分: app2_1 Settings Hello world! BMI计算器 男女身高(cm) 体重(kg) 计算BMI值 你还没有输入资料! (4) 设计布局首先,单击左边文件夹列表中的res文件夹,再单击其下的layout文件夹,双击其下的activity_main.xml文件。单击activity_main.xml标签,进入代码界面,将其中所有代码删除。单击Graphical Layout标签,单击La
11、youts导航条,从中选择LinearLayout(vertical)组件图标,拖曳至右边。如图。(5) 添加控件将Form Widgets等控件列表中的控件拖曳到可视设计窗口中。分别往窗体中添加3个TextView控件textView1textView3、1个RadioGroup(含2个RadioButton控件radio0radio1、2个EditText控件editText1editText2和1个Button控件button1。 (6) 设置控件属性控件属性设置如表所示。 控件属性设置组 件属性值textView1android:text=string/appnameradioGrou
12、pandroid:layout_gravity=centerandroid:orientation=horizontalradio0android:text=string/sex1radio1android:text=string/sex2editText1android:inputType=numberDecimal|numberSignededitText2android:inputType=numberDecimal|numberSignedtextView2android:text=string/highttextView3android:text=string/weightbutto
13、n1android:text=string/count设置完控件属性后,窗体中控件及其布局如图所示。 (7) 添加并编写控件事件代码单击左边src文件夹,单击其下的com.example.app2_1,单击其下的MainActivity.java文件,进入编码界面。输入黄色底色的代码:package com.example.app2_1;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.Butto
14、n;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt=(Button)findViewById(R.id.button1); bt.setOnClickL
15、istener(new View.OnClickListener() Overridepublic void onClick(View arg0) / TODO Auto-generated method stubEditText h = (EditText)findViewById(R.id.editText1);String h1 = h.getText().toString();double hh;if(.equals(h1)hh = 0;elsehh =Double.valueOf(h1) ; EditText w = (EditText)findViewById(R.id.editT
16、ext2);String w1 = w.getText().toString();double ww;if(.equals(w1)ww = 0;elseww =Double.valueOf(w1) ; if (ww=0 | hh=0)Toast message=Toast.makeText(MainActivity.this,R.string.hint,Toast.LENGTH_SHORT);message.show();elseDouble bmi=ww/(hh*hh/10000);String bmistr=bmi.toString();Toast message=Toast.makeTe
17、xt(MainActivity.this,bmistr,Toast.LENGTH_SHORT);message.show();); Override public boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; 5. 实验结果在运行前,先单击工具栏中“”(AVD Manager)图标,打开AVD管理器,在已
18、存在的AVD列表中选择一AVD,单击Start按钮,进入Android虚拟窗口,解锁后Anzroid虚拟窗口。回到Eclipse窗口,关闭AVD Manager窗口,右击左边的app2_1,选择Run As菜单项下的“Android Application”子菜单项,开始执行程序,可以在Android虚拟窗口中看到运行界面,输入身高和体重,单击“计算BMI值”按钮,看看提示消息框,如果值在1824之间,说明你身材很好,如果大于24,那就代表身材不是那么好。 Android程序运行实验三 GUI创建套件Widget的使用1 实验目的及要求1. 掌握资源编辑器、布局编辑器的使用2. 掌握按钮、编辑
19、框、日期时间、对话框、下拉列表等主要widget组件编程2 实验设备(环境)及要求1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 3 实验内容1. 设计按钮、复选框、单选按钮、普通按钮、单机按钮弹出对话框。2. 设计单项自动提示文本框、多项自动提示文本框、下拉列表。4 实验步骤1. 新建项目Button/Edit,在res/layput中修改布局文件main.xml2. 编辑Activity程序文件ButtonActivity3. 继承Dialog类,新建自定义的对话框类DialogPro.java5 实验核心代码(关键代码),及调
20、试中的问题EGGER Microcontroller GmbH & Co. KGSolutions for real time microcontroller applicationsC-file generated by: * GUI_Builder for emWin version 5.22 Compiled Jul 4 2013, 15:16:01 (c) 2013 Segger Microcontroller GmbH & Co. KG Internet: url/url Support: emailsupport/email USER START (Optionally inser
21、t additional includes) USER END#include DIALOG.h Defines#define ID_WINDOW_0 0#define ID_BUTTON_0 0x170#define ID_BUTTON_1 0x171#define ID_ICONVIEW_0 0x250#define ID_DROPDOWN_0 0X180#define ID_GRAPH_0 0x220#define ID_EDIT_0 0x100USER START (Optionally insert additional defines)USER END Static dataUSE
22、R START (Optionally insert additional static data)USER END _aDialogCreatestatic const GUI_WIDGET_CREATE_INFO _aDialogCreate = WINDOW_CreateIndirect, Window, ID_WINDOW_0, 2, 0, 240, 320, 0, 0x0, 0 , BUTTON_CreateIndirect, Button, ID_BUTTON_0, 79, 268, 80, 20, 0, 0x0, 0 , GRAPH_CreateIndirect, Graph,
23、ID_GRAPH_0, 20, 110, 200, 100, 0, 0x0, 0 , EDIT_CreateIndirect, Edit, ID_EDIT_0, 58, 35, 120, 63, 0, 0x64, 0 ,/ USER START (Optionally insert additional widgets)/ USER END; Static codeUSER START (Optionally insert additional static code)USER END _cbDialogstatic void _cbDialog(WM_MESSAGE * pMsg) WM_H
24、WIN hItem;int NCode;int Id;/ USER START (Optionally insert additional variables)/ USER ENDswitch (pMsg-MsgId) case WM_INIT_DIALOG:/ Initialization of Edit/hItem = WM_GetDialogItem(pMsg-hWin, ID_EDIT_0);EDIT_SetText(hItem, ZHANG YI);/ USER START (Optionally insert additional code for further widget i
25、nitialization)/ USER ENDbreak;case WM_NOTIFY_PARENT:Id = WM_GetId(pMsg-hWinSrc);NCode = pMsg-Data.v;switch(Id) case ID_BUTTON_0: / Notifications sent by Buttonswitch(NCode) case WM_NOTIFICATION_CLICKED:/ USER START (Optionally insert code for reacting on notification message)/ USER ENDbreak;case WM_
26、NOTIFICATION_RELEASED:/ USER START (Optionally insert code for reacting on notification message)/ USER ENDbreak;/ USER START (Optionally insert additional code for further notification handling)/ USER ENDbreak;case ID_EDIT_0: / Notifications sent by Editswitch(NCode) case WM_NOTIFICATION_CLICKED:/ U
27、SER START (Optionally insert code for reacting on notification message)/ USER ENDbreak;case WM_NOTIFICATION_RELEASED:/ USER START (Optionally insert code for reacting on notification message)/ USER ENDbreak;case WM_NOTIFICATION_VALUE_CHANGED:/ USER START (Optionally insert code for reacting on notif
28、ication message)/ USER ENDbreak;/ USER START (Optionally insert additional code for further notification handling)/ USER ENDbreak;/ USER START (Optionally insert additional code for further Ids)/ USER ENDbreak;/ USER START (Optionally insert additional message handling)/ USER ENDdefault:WM_DefaultPr
29、oc(pMsg);break;/* Public code*/* CreateWindow*/void Main_Task(void) /?GUI_Init();WM_SetDesktopColor(GUI_WHITE); /* Automacally update desktop window */WM_SetCreateFlags(WM_CF_MEMDEV); /* Use memory devices on all windows to avoid flicker */PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);/FRAMEWIN_SetDefau
30、ltSkin(FRAMEWIN_SKIN_FLEX);/PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);/BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);/CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);/DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);/SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);/SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);/HEADER_Set
31、DefaultSkin(HEADER_SKIN_FLEX);/RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);/?GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbDialog, 0, 0, 0);/ USER START (Optionally insert additional public code)/USER END6 实验的运行结果及分析实验四 SQLite应用1 实验目的及要求1. 进一步掌握GUI应用2. 掌握shared Preference应用2 实验设备(环境)及
32、要求1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 3 实验内容1. 新建项目SharedPreference,设计一个GUI界面。2. 设计按钮响应代码,保存按钮界面输入信息保存于Shared Preference共享文件3. 退出应用程序或关机时自动保存界面信息到共享文件4 实验步骤1. 新建项目SharedPreference,在res中新建value-zh文件夹,在res/values-zh/string.xml中增加字符串资源,strings.xml.2. Reslayout中修改布局文件main.xml3. 编辑Acti
33、vity程序文件SharedPreference.java5 实验核心代码(关键代码),及调试中的问题#include #include using namespace std;void doTest() sqlite3* conn = NULL; /1. 打开数据库 int result = sqlite3_open(D:/mytest.db,&conn); if (result != SQLITE_OK) sqlite3_close(conn); return; const char* createTableSQL = CREATE TABLE TESTTABLE (int_col INT
34、, float_col REAL, string_col TEXT); sqlite3_stmt* stmt = NULL; int len = strlen(createTableSQL); /2. 准备创建数据表,如果创建失败,需要用sqlite3_finalize释放sqlite3_stmt对象,以防止内存泄露。 if (sqlite3_prepare_v2(conn,createTableSQL,len,&stmt,NULL) != SQLITE_OK) if (stmt) sqlite3_finalize(stmt); sqlite3_close(conn); return; /3.
35、 通过sqlite3_step命令执行创建表的语句。对于DDL和DML语句而言,sqlite3_step执行正确的返回值只有SQLITE_DONE。 /对于SELECT查询而言,如果有数据返回SQLITE_ROW,当到达结果集末尾时则返回SQLITE_DONE。 if (sqlite3_step(stmt) != SQLITE_DONE) sqlite3_finalize(stmt); sqlite3_close(conn); return; /4. 释放创建表语句对象的资源。 sqlite3_finalize(stmt); printf(Succeed to create test tabl
36、e now.n); /5. 构造查询表数据的sqlite3_stmt对象。 const char* selectSQL = SELECT * FROM TESTTABLE WHERE 1 = 0; sqlite3_stmt* stmt2 = NULL; if (sqlite3_prepare_v2(conn,selectSQL,strlen(selectSQL),&stmt2,NULL) != SQLITE_OK) if (stmt2) sqlite3_finalize(stmt2); sqlite3_close(conn); return; /6. 根据select语句的对象,获取结果集中的
37、字段数量。 int fieldCount = sqlite3_column_count(stmt2); printf(The column count is %d.n,fieldCount); /7. 遍历结果集中每个字段meta信息,并获取其声明时的类型。 for (int i = 0; i fieldCount; +i) /由于此时Table中并不存在数据,再有就是SQLite中的数据类型本身是动态的,所以在没有数据时无法通过sqlite3_column_type函数获取,此时sqlite3_column_type只会返回SQLITE_NULL, /直到有数据时才能返回具体的类型,因此这里使用了sqlite3_column_decltype函数来获取表声明时给出的声明类型。 string stype = sqlite3_column_decltype(stmt2,i); stype = strlwr(char*)stype.c_str(); /数据类型以决定字段亲缘性的规则解析 if (stype.find(int) != string:npos) printf(The type of %dth column is INTEGER.n,i); else if (stype.find