android实验嵌入式实验报告.doc_第1页
android实验嵌入式实验报告.doc_第2页
android实验嵌入式实验报告.doc_第3页
android实验嵌入式实验报告.doc_第4页
android实验嵌入式实验报告.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

实 验 报 告课程名称: 嵌入式系统设计与开发 院 系: 信息工程学院 专业班级: 学 号: 学生姓名: 指导教师: 开课时间: 2011 至 2012 学年第 二 学期 黄淮学院教务处制一、学生撰写要求按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。二、教师评阅与装订要求1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。4.独立设课的实验课程,实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩;5.非独立设课的实验课程,实验报告综合按教学大纲规定计入相关理论课程的总评成绩。6.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。7.根据课程性质,实验报告可提交电子版,但需要有教师的批改记录,并将电子版汇总后刻录在一张光盘上,并加上封面、实验报告成绩登记表、实验报告成绩评定依据。黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称Android开发环境搭建实验时间2012年2月15日学生姓名实验地点同组人员无专业班级1、实验目的1、了解Android项目环境的各个组成部分2、掌握项目环境搭建方法3、掌握每个软件的基本使用方法2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:Android开发环境搭建 境搭建 1、 JDK安装同时配置好环境变量; 2、clipse安装 3、Android SDK安装 :在Android官网下载完成后解压到任意路径。运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的Force https:/.这项,再点击Available Packages 。 选择希望安装的SDK及其文档或者其它包,开始下载安装所选包 在用户变量中新建PATH值为:值为Android SDK中的tools绝对路径(例如D:AndroidDevelopandroid-sdk-windowstools)。 4、ADT安装 :打开 Eclipse IDE,进入菜单中的 Help - Install New Software 点击Add.按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入/android/eclipse。 确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,选中Android DDMS和Android Development Tool 然后就是按提示一步一步next。 完成之后:选择Window Preferences. 在左边的面板选择Android,然后在右侧点击Browse.并选中SDK路径,如: D:AndroidDevelopandroid-sdk-windows 点击Apply、OK。配置完成。 5、创建AVD 1、在Eclipse中。选择Windows Android SDK and AVD Manager 2、点击左侧面板的Virtual Devices,再右侧点击New 3、填入Name,选择Target的API,SD Card大小任意,Skin随便选, 4、点击Create AVD即可完成创建AVD 5、实验现象、实验数据记录: 无6、实验现象、实验数据的分析:7、实验结论: 通过此次实验,我学会了如何搭建android的开发平台,以及如何启动android模拟器,这是我学习android开发的前提。指导教师评语和成绩评定: 该同学基本按要求,掌握了实验内容,能够正确配置环境 实验报告成绩:指导教师签字: 年 月 日黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称项目建立及调试实验时间 2012年2月22日学生姓名 实验地点同组人员无专业班级1、实验目的1. android项目的建立与测试2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:实验内容:初步了解android project建立过程以及如何运行模拟器,对android的运行原理进行简单了解;4、实验方法、步骤:1. 首先建立一个android模拟器命名为5554;2. 启动android模拟器;3. 建立一个android project命名为test;4. 编写相应的project源代码; 5、实验现象、实验数据记录: Activity1:package your.packag;import android.app.Activity;import android.os.Bundle;import android.content.Intent;import android.view.View;import android.widget.Button;public class Activity1 extends Activity Button btn1;Button btn2; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); btn1=(Button)findViewById(R.id.button1); btn2=(Button)findViewById(R.id.button2); btn1.setOnClickListener(new Button.OnClickListener()Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent();intent.setClass(Activity1.this, Activity2.class);startService(intent);); btn2.setOnClickListener(new Button.OnClickListener()Overridepublic void onClick(View v) / TODO Auto-generated method stubIntent intent=new Intent();intent.setClass(Activity1.this, Activity2.class);stopService(intent); ); Activity2:package your.packag;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.os.IBinder;public class Activity2 extends Serviceprivate MediaPlayer player;public IBinder onBind(Intent arg0)return null;public void onStart(Intent intent,int startId)super.onStart(intent, startId);player=MediaPlayer.create(this, R.raw.my);player.start();public void onDestroy()super.onDestroy();player.stop();6、实验现象、实验数据的分析:7、实验结论: 通过此次实验,我学会了如何搭建android的开发平台,以及如何启动android模拟器,这是我学习android开发的前提。指导教师评语和成绩评定: 该同学基本按要求,掌握了实验内容,实验结果及步骤正确 实验报告成绩:指导教师签字: 年 月 日黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称用户界面设计(一)实验时间 2012年3月3日学生姓名 实验地点同组人员无专业班级1、实验目的掌握嵌入式程序界面的几种布局方式(线性布局、表格布局、帧布局)2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:用户界面设计4、实验方法、步骤:1、 学习嵌入式界面的布局方式2、 编写Android程序代码3、 运行调试Android程序4、 牢记布局方式5、实验现象、实验数据记录: 无6、实验现象、实验数据的分析:7、实验结论: 通过这个实验我学习了Android程序的界面布局管理的几种方式。理解布局对于好的Android应用设计来说是非常重要的。一个关于布局如何适应Android应用程序架构,一些特定的可用布局控件,用它们来以各种各样的方式组织应用程序屏幕内容。指导教师评语和成绩评定: 该同学基本按要求,掌握了实验内容,实验结果及步骤正确 实验报告成绩:指导教师签字: 年 月 日黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称用户界面设计(二)实验时间 2012年3月10日学生姓名 实验地点同组人员无专业班级1、实验目的掌握TextView、Button、EditTextView等组件的使用2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:此次实验实现一个用户登录界面;其中包含一个textview和一个button有两个edittextview;4、实验方法、步骤:1、 学习常用的几种Android布局组件2、 编写Android程序实现组件的作用3、 调试运行Android程序4、 加深学习布局组件配置文件main.xml源代码如下: 6、实验现象、实验数据的分析:7、实验结论: 通过此次实验对textview、button和edittextview有了一定的认识,对绝对布局也有了更深的认识,对以后android的学习有了很大的帮助。指导教师评语和成绩评定: 该同学基本按要求,掌握了实验内容,实验结果及步骤正确 实验报告成绩:指导教师签字: 年 月 日黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称数独游戏界面开发实验时间 2012年3月17日学生姓名 实验地点同组人员无专业班级1、实验目的1. 掌握数独游戏的界面设计方法 2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:数独游戏界面开发4、 实验方法、步骤: 1、MainActivity,主体类,负责处理键盘事件和维护一个题库。2、MainView,显示类,负责维护并显示当前棋局。3、GridCell和Question两个实体类,分别描述了棋盘单元格的信息和题目信息。4、Helper类,助手类,封装一些函数,如读写记录、自动解题函数等5、实验现象、实验数据记录: * Excerpted from Hello, Android, * published by The Pragmatic Bookshelf. * Copyrights apply to this code. It may not be used to create training material, * courses, books, articles, and the like. Contact us if you are in doubt. * We make no guarantees that this code is fit for any purpose. * Visit /titles/eband3 for more book information.*/package org.example.sudoku;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.view.Gravity;import android.widget.Toast;public class Game extends Activity public static final String KEY_DIFFICULTY = org.example.sudoku.difficulty; private static final String PREF_PUZZLE = puzzle ; public static final int DIFFICULTY_EASY = 0; public static final int DIFFICULTY_MEDIUM = 1; public static final int DIFFICULTY_HARD = 2; protected static final int DIFFICULTY_CONTINUE = -1; private int puzzle; /定义了字符串,字符串里面的内容是我们在游戏界面中看到的内容 /显示方式横排显示每行9个数字,0不显示,难度级别有3种。 private final String easyPuzzle = 360000000004230800000004200 + 070460003820000014500013020 + 001900000007048300000000045; private final String mediumPuzzle = 650000070000506000014000005 + 007009000002314700000700800 + 500000630000201000030000097; private final String hardPuzzle = 009000000080605020501078000 + 000000700706040102004000000 + 000720903090301080000000600; private PuzzleView puzzleView; Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); /通过调用getPuzzle(diff)来启动不同难度级别 int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY); /puzzle数组的值来自于getPuzzle(diff)返回的值 puzzle = getPuzzle(diff); calculateUsedTiles(); puzzleView = new PuzzleView(this); setContentView(puzzleView); puzzleView.requestFocus(); getIntent().putExtra(KEY_DIFFICULTY, DIFFICULTY_CONTINUE); protected void onResume() super.onResume(); Music.play(this, R.raw.game); Override protected void onPause() super.onPause(); Music.stop(this); /保存当前游戏数字 getPreferences(MODE_PRIVATE).edit().putString(PREF_PUZZLE, toPuzzleString(puzzle).commit(); /* 把不同难度级别传给puz*/ private int getPuzzle(int diff) String puz; switch (diff) case DIFFICULTY_CONTINUE: puz = getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE, easyPuzzle); break; / . case DIFFICULTY_HARD: puz = hardPuzzle; break; case DIFFICULTY_MEDIUM: puz = mediumPuzzle; break; case DIFFICULTY_EASY: default: puz = easyPuzzle; break; /调用fromPuzzleString(puz)把字符串类型的puz转换成整型数组 return fromPuzzleString(puz); /* 把数组转换成字符串,便于保存 */ static private String toPuzzleString(int puz) StringBuilder buf = new StringBuilder(); for (int element : puz) buf.append(element); return buf.toString(); /* 把字符串类型的puz转换成数组 */ static protected int fromPuzzleString(String string) int puz = new intstring.length(); for (int i = 0; i puz.length; i+) puzi = string.charAt(i) - 0; return puz; /* 返回给定坐标的下的数值*/ private int getTile(int x, int y) return puzzley * 9 + x; /* 把给定坐标下,格子内的值变为给定值value */ private void setTile(int x, int y, int value) puzzley * 9 + x = value; /* 把给定坐标的值变为string类型,在puzzleView类里使用onDraw()方法调用 */ protected String getTileString(int x, int y) int v = getTile(x, y); if (v = 0) return ; else return String.valueOf(v); /* 当用户输入的值与所在的行、列及所在的3x3格不重复时,调用setTile(x, y, value); * 并使用calculateUsedTiles()重新把(x,y)所在的行、列及所在的3x3格内已经使用的值保存起来 */ protected boolean setTileIfValid(int x, int y, int value) int tiles = getUsedTiles(x, y); if (value != 0) for (int tile : tiles) if (tile = value) return false; setTile(x, y, value); calculateUsedTiles(); return true; /* 当用户输入时,打开键盘 */ protected void showKeypadOrError(int x, int y) int tiles = getUsedTiles(x, y); if (tiles.length = 9) Toast toast = Toast.makeText(this, R.string.no_moves_label, Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); else Dialog v = new Keypad(this, tiles, puzzleView); v.show(); Override public boolean onKeyDown(int keyCode, KeyEvent event) switch (keyCode) case KeyEvent.KEYCODE_DPAD_UP: select(selX, selY - 1); break; case KeyEvent.KEYCODE_DPAD_DOWN: select(selX, selY + 1); break; case KeyEvent.KEYCODE_DPAD_LEFT: select(selX - 1, selY); break; case KeyEvent.KEYCODE_DPAD_RIGHT: select(selX + 1, selY); break; case KeyEvent.KEYCODE_0: case KeyEvent.KEYCODE_SPACE: setSelectedTile(0); break; case KeyEvent.KEYCODE_1: setSelectedTile(1); break; case KeyEvent.KEYCODE_2: setSelectedTile(2); break; case KeyEvent.KEYCODE_3: setSelectedTile(3); break; case KeyEvent.KEYCODE_4: setSelectedTile(4); break; case KeyEvent.KEYCODE_5: setSelectedTile(5); break; case KeyEvent.KEYCODE_6: setSelectedTile(6); break; case KeyEvent.KEYCODE_7: setSelectedTile(7); break; case KeyEvent.KEYCODE_8: setSelectedTile(8); break; case KeyEvent.KEYCODE_9: setSelectedTile(9); break; case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_DPAD_CENTER: game.showKeypadOrError(selX, selY); break; default: return super.onKeyDown(keyCode, event); return true; /* 暂存格子的值 */ private final int used = new int99; /* Return cached used tiles visible from the given coords * 返回给定坐标所在的格子中有哪些值可用,该值不能与格子所在的行、列、3x3单元中已有的重复 * */ protected int getUsedTiles(int x, int y) return usedxy; /* 调用calculateUsedTiles(x, y)得到游戏视图中已经使用的值 */ private void calculateUsedTiles() for (int x = 0; x 9; x+) for (int y = 0; y 9; y+) usedxy = calculateUsedTiles(x, y); /* 查找格子(x,y)所在的行、列、3x3单元中已经存在的非0数字 */ private int calculateUsedTiles(int x, int y) int c = new int9; / 行查找 for (int i = 0; i 9; i+) if (i = x) continue; int t = getTile(i, y); if (t != 0) ct - 1 = t; / 列查找 for (int i = 0; i 9; i+) if (i = y) continue; int t = getTile(x, i); if (t != 0) ct - 1 = t; / 格子(x,y)所在3x3单元中查找,比如给定坐标(2,5) int startx = (x / 3) * 3;/0 int starty = (y / 3) * 3;/3 for (int i = startx; i startx + 3; i+) for (int j = starty; j starty + 3; j+) if (i = x & j = y) continue; int t = getTile(i, j); if (t != 0) ct - 1 = t; /把不重复的、非0的数值存入数组 int nused = 0; for (int t : c) if (t != 0) nused+; int c1 = new intnused; nused = 0; for (int t : c) if (t != 0) c1nused+ = t; return c1; 6、实验现象、实验数据的分析:7、实验结论: 通过这个实验我学习了怎么设计软件界面。以及如何以图形的形式响应用户的输入。指导教师评语和成绩评定: 该同学基本按要求,掌握了实验内容,实验结果及步骤正确 实验报告成绩:指导教师签字: 年 月 日黄淮学院信息工程学院(系)嵌入式系统设计与开发课程验证性实验报告实验名称图形图像处理实验时间 2012年3月25日学生姓名 实验地点同组人员无专业班级1、实验目的掌握Drawable资源的使用方法2、实验主要仪器设备和材料:硬件:微型计算机软件:Eclipse、JDK、SDK、ADT3、实验内容和原理:图形图像处理 了解android里的图形图像处理过程,学习drawable以及canvas等方法的使用 ;4、实验方法、步骤:1、 了解Drawable资源种类2、 学习自定义view、Color、Paint、Bitmap、Canvas、Metrix等资源;3.建立一个android project命名为test;4.编写相应的project源代码;5.通过模拟器调试源代码编写程序使用Drawable资源实现某个功能5、实验现象、实验数据记录: package your.packag;import java.io.InputStream;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.View;public class Activity2 extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(new MyView(this);class MyView extends View public MyView(Context context) super(context);protected void onDraw(Canvas canvas) Resources res = getResources();InputStream is = res.openRawResource(R.drawable.pic5);BitmapDrawable bmpDraw = new BitmapDrawable(is);Bitmap bmp = bmpDraw.getBitmap();InputStream ws = res.openRawResource(R.drawable.ic_launcher);BitmapDrawable waterBmpDraw = new BitmapDrawable(ws);Bitmap watermark = waterBmpDraw.getBitmap();Bitmap wb=createBitmap(bmp,watermark);canvas.drawBitmap(wb,0,0,null);super.onDraw(canvas);private Bitmap createBitmap( Bitmap src, Bitmap watermark ) if( src = null ) return null; int w = src.getWidth(); int h = src.getHeight(); int ww = watermark.getWidth(); int wh = watermark.getHeight(); Bitmap newb = Bitmap.createBitmap( w, h, Config.ARGB_8888 ); Canvas cv = new Canvas( newb ); cv.drawBitmap( src, 0, 0, null );/draw src at (0,0) cv.drawBitmap( watermark, w - ww + 5, h - wh + 5, n

温馨提示

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

最新文档

评论

0/150

提交评论