基于android开发实验报告总结.docx_第1页
基于android开发实验报告总结.docx_第2页
基于android开发实验报告总结.docx_第3页
基于android开发实验报告总结.docx_第4页
基于android开发实验报告总结.docx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于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 实验步骤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之间的参数传递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 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 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. getMenuInflater().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) = name;Overridepublic void 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.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值。其中所用到的字符串和数值尽可能预先建立资源。(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 Resources对话框中单击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标签,单击Layouts导航条,从中选择LinearLayout(vertical)组件图标,拖曳至右边。如图。(5) 添加控件将Form Widgets等控件列表中的控件拖曳到可视设计窗口中。分别往窗体中添加3个TextView控件textView1textView3、1个RadioGroup(含2个RadioButton控件radio0radio1、2个EditText控件editText1editText2和1个Button控件button1。 (6) 设置控件属性控件属性设置如表所示。 控件属性设置组 件属性值textView1android:text=string/appnameradioGroupandroid:layout_gravity=centerandroid:orientation=horizontalradio0android:text=string/sex1radio1android:text=string/sex2editText1android:inputType=numberDecimal|numberSignededitText2android:inputType=numberDecimal|numberSignedtextView2android:text=string/highttextView3android:text=string/weightbutton1android: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.Button;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.setOnClickListener(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.editText2);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.makeText(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管理器,在已存在的AVD列表中选择一AVD,单击Start按钮,进入Android虚拟窗口,解锁后Anzroid虚拟窗口。回到Eclipse窗口,关闭AVD Manager窗口,右击左边的app2_1,选择Run As菜单项下的“Android Application”子菜单项,开始执行程序,可以在Android虚拟窗口中看到运行界面,输入身高和体重,单击“计算BMI值”按钮,看看提示消息框,如果值在1824之间,说明你身材很好,如果大于24,那就代表身材不是那么好。 Android程序运行实验三 GUI创建套件Widget的使用1 实验目的及要求1. 掌握资源编辑器、布局编辑器的使用2. 掌握按钮、编辑框、日期时间、对话框、下拉列表等主要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 实验核心代码(关键代码),及调试中的问题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 Support: /email USER START (Optionally insert 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 dataUSER 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, 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_HWIN 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 initialization)/ 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_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:/ USER 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 notification 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_DefaultProc(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_SetDefaultSkin(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_SetDefaultSkin(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 实验设备(环境)及要求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. 编辑Activity程序文件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, 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. 通过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 table 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语句的对象,获取结果集中的字段数量。 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(char) != string:npos | stype.find(text) != string:npos) printf(The type of %dth column is TEXT.n,i); else if (stype.find(real) != string:npos | stype.find(floa) != string:npos | stype.find(doub) != string:npos ) printf(The type of %dth column is DOUBLE.n,i); sqlite3_finalize(stmt2); /8. 为了方便下一次测试运行,我们这里需要删除该函数创建的数据表,否则在下次运行时将无法创建该表,因为它已经存在。 const char* dropSQL = DROP TABLE TESTTABLE; sqlite3_stmt* stmt3 = NULL; if (sqlite3_prepare_v2(conn,dropSQL,strlen(dropSQL),&stmt3,NULL) != SQLITE_OK) if (stmt3) sqlite3_finalize(stmt3); sqlite3_close(conn); return; if (sqlite3_step(stmt3) = SQLITE_DONE) printf(The test table has been dropped.n); sqlite3_finalize(stmt3); sqlite3_close(conn);int main() doTest(); return 0;/输出结果为:/Succeed to create test table now./The column count is 3./The type of 0th column is INTEGER./The type of 1th column is DOUBLE./The type of 2th column is TEXT./The test table has been dropped.二、常规数据插入 1). 创建测试数据表。 2). 通过INSERT语句插入测试数据。 3). 删除测试表。见以下代码及关键性注释:#include #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, 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. 通过sqlite3_step命令执行创建表的语句。对于DDL和DML语句而言,sqlite3_step执行正确的返回值只有SQLITE_DONE。 /对于SELECT查询而言,如果有数据返回SQLIT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论