Android应用开发实验指导书.doc

上传人:xin****828 文档编号:6632501 上传时间:2020-03-01 格式:DOC 页数:55 大小:2.33MB
返回 下载 相关 举报
Android应用开发实验指导书.doc_第1页
第1页 / 共55页
Android应用开发实验指导书.doc_第2页
第2页 / 共55页
Android应用开发实验指导书.doc_第3页
第3页 / 共55页
点击查看更多>>
资源描述
手机应用开发实验指导书西南科技大学计算机科学与技术学院2015.11目录手机应用开发1实验指导书1实验一:搭建Android开发平台和创建HelloWorld程序- 1 -实验目的- 1 -实验要求- 1 -实验内容- 1 -一、安装并配置Java JDK- 1 -二、下载安装集成ADT(Android Development Tools 插件的Eclipse(即adt-bundle)- 3 -三、创建Android虚拟设备(AVD)- 5 -四、创建第一个Android工程项目HelloWorld- 6 -实验二:UI设计8实验目的8实验要求8实验内容8一、常用控件8二、界面布局10三、事件处理13实验三:Intent、Activity应用15一、实验目的15二、实验要求15三、实验步骤151、创建项目152、添加布局文件164修改AndroidManifest.xml文件19实验四:service应用20一、实验目的20二、实验要求20三、实验步骤201、创建项目202、布局文件213、修改AndroidManifest.xml文件24实验五:SQLite和SQLiteDatabase应用25一、实验目的25二、实验要求251、创建项目262、布局文件283、创建Activity29实验六: 图形绘制与OpenGL ES34一、实验目的34二、实验要求341、了解在屏幕绘图方法342、了解OpenGL34三、实验原理34四、实验过程341、绘制直线、园、曲线等各种图形342、显示字符343、利用OpenGL ES方法编程34实验七: 网络访问与服务36一、实验目的36二、实验要求361、了解手机WEB网站访问编程362、通过网络进行数据访问363、了解数据库使用36三、实验原理36四、实验过程37实验八 硬件访问与传感器38一、实验目的38二、实验要求381、获取手机上电话、短信等各种功能的编程382、了解手机上各种传感器的功能与使用方法38三、实验原理38四、实验过程381、了解程序使用手机电话功能的方法382、手机上有多种传感器,可以对这些传感器进行编程。41实验九: 综合实验47平时实验报告模板47综合实验设计实现报告50报告撰写安排表51注意:平时实验只完成实验一到实验五实验一:搭建Android开发平台和创建HelloWorld程序实验目的本次实验的目的是让同学们熟悉搭建智能手机开发平台的过程,了解Andorid应用程序项目的基本文件目录结构,并实现HelloWorld小例程。实验要求1. 学习Android开发平台的搭建及相关配置2. 创建项目并熟悉文件目录结构3. 实现例程HelloWorld实验内容一、安装并配置Java JDK1. 下载安装JDK,网址如下。(http:/www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm)(1) 了解JDK与JRE的区别。(2) 了解JDK 不同版本号的区别。(3) 了解jdk-8u65-windows-i586.exe与jdk-8u65-windows-x64.exe的区别(4) 查看并记录下实验用机上jdk的版本以及安装地址。2. 配置JDK:XP:右键“我的电脑”“属性”“高级”“环境变量”WIN7:右键“我的电脑”“高级系统设置”“环境变量”新建系统变量:JAVA_HOME,C:Program Files (x86)Javajdk1.6.0_18(JDK安装目录)。PATH,%JAVA_HOME%bin;%JAVA_HOME%jrbin。CLASSPATH,.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar(前面的.;一定要加上)配置完成后在CMD中输入java version和javac version,能看到对应的JDK版本即配置成功,如下图所示。请思考设置这三个环境变量的作用。二、下载安装集成ADT(Android Development Tools 插件的Eclipse(即adt-bundle)1. 认识开发工具根据桌面的eclipse(adt)快捷找到本机上的adt-bundle,打开并了解其目录结构。2. 认识、使用SDK 管理器工具 在adt-bundle文件目录里找到并启动SDK Manager.exe,查看本机目前安装的Android SDK插件情况。3. 启动Eclipse在adt-bundle文件目录里找到并启动eclipse.exe,启动后查看本机上eclipse配置的工作区位置(工程源代码存放的位置)。请思考如何使代码编辑区的代码显示行号,如果修改代码区字符的大小。三、创建Android虚拟设备(AVD)1. 启动AVD (Android Virtual Device)管理器在adt-bundle的sdk目录下找到并启动 AVD Manager.exe2. 尝试创建一台虚拟的目标调试设备,注意物理内存不要设置太大。四、创建第一个Android工程项目HelloWorld1. 打开Eclipse。2. 点击“File”“New” “Project”“Android Project”,创建HelloWorld项目。3. 输入合法的Application Name、Project Name和Package Name后一路Next,完成项目的创建。创建成功后的项目文件结构如下:找到并查看项目中的如下几个文件:a) MainActivity.javab) R.javac) activity_main.xmld) strings.xmle) AndroidManifest.xmlf) Project.properties4. 打开eclipse下方的Problem查看器查看警告。5. 选择项目HelloWorld点击右键Run As“Android Application”,用之前创建的AVD运行此项目。6. 如果运行失败,查看相应的提示信息后,重新跳到步骤1创建一个新的项目HelloWorld2,创建时将Minimun Required SDK设置为Android 4.0或以上。请思考第一次创建的项目为什么会多生成一个appcompat_V7目录,并且运行失败。更改最低SDK版本后运行成功。实验二:UI设计实验目的本次实验的目的是让同学们熟悉Android开发中的UI设计,包括了解和熟悉常用控件的使用、界面布局和事件处理等内容。实验要求1. 熟悉和掌握界面控件设计2. 了解Android界面布局3. 掌握控件的事件处理实验内容一、常用控件1.常用控件介绍Android中有许多常用控件(简单分类):文本框:TextView、EditText按钮:Button、RadioButton、RadioGroup、CheckBox、ImageButton列表:List、ExpandableListView、Spinner、AutoCompleteTextView、GridView、ImageView进度条:ProgressBar、ProgressDialog、SeekBar、RatingBar选择器:DatePicker、TimePicker菜单:Menu、ContentMenu对话框:Dialog、ProgressDialog常用的控件有文本框、按钮和列表等。2.控件的实现在上一个实验中,我们用一个TextView控件实现了在界面显示一句“Hello World!”。 现在我们来看一看.xml文件和编码的相互关系。将MainActivity.java中代码修改如下:注意在上面并没有为textView和button设置文本内容等,另外textView的初始化代码为:TextView textView = (TextView)findViewById(R.id.textView01);此处初始化用到了id为textView01的TextView。在项目目录中找到/res/layout/activity_main.xml,修改代码如下:注意上面列出了两个控件:TextView和Button,id分别为textView01和button01,它们的文本内容分别为string/hello_world和string/button。在项目目录中找到/res/values/strings.xml,如下:可以看到两个string:hello和button的内容分别为“Hello The Android World!”和“I am a button!”,即使文本框和按钮在界面上显示的内容,如下图所示:3.控件的属性可以直接在类中为控件设置属性,也可以在xml文件中设置属性。每个控件都有一系列的属性,例如id、size、text、color等等,大家可以找找API查看控件的属性。二、界面布局Android中有很多布局:l FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。Android屏幕元素中所有的显示对象都将会固定在屏幕的左上角,不能指定位置。但允许有多个显示对象,但后一个将会直接在前一个之上进行覆盖显示,把前一个部份或全部挡住(除非后一个是透明的)。l LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。l TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自的单元格之中,但单元格的边框线不可见。l AbsoluteLayout:允许以坐标的方式,指定显示对象的具体位置,左上角的坐标为(0, 0),向下及向右,坐标值变大。这种布局管理器由于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终的显示效果不一致。l RelativeLayout:允许通过指定显示对象相对于其它显示对象或父级对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。布局中可以放置控件,而每个布局又可以嵌套其他布局,这种思想和之前学习java的布局是一样的。例如在activity_main.xml中如下布局: 在一个LinearLayout布局下嵌套了两个LinearLayout,出来的效果如下图所示:其他布局请同学们自行尝试。三、事件处理事件监听和时间处理的概念大家以前都学习过,android中主要有如下事件方法:l onClick(View v) 一个普通的点击按钮事件 l boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event)用于在多个事件连续时发生,用于按键重复l boolean onKeyDown(int keyCode,KeyEvent event) 用于在按键进行按下时发生 l boolean onKeyUp(int keyCode,KeyEvent event) 用于在按键进行释放时发生l onTouchEvent(MotionEvent event)触摸屏事件,当在触摸屏上有动作时发生l boolean onKeyLongPress(int keyCode, KeyEvent event)当长时间按时发生下面以点击一个Button为例子:为button添加了一个监听buttonListener,对应的onClick方法则抛出了一则文本框提示用户,效果图如下所示:其它控件的使用请同学们自行尝试。实验三:Intent、Activity应用一、实验目的本次实验的目的是让同学们熟悉Intent和Activity的使用。Intent的最常用的用途是绑定应用程序组件。Intent用来在应用程序Activity间启动、停止和传输。并实现添加用户名,密码小例程。二、实验要求1. 完成Android开发平台的搭建及相关配置2. 创建项目并熟悉文件目录结构3. 实现例程添加用户名,密码实验步骤三、实验步骤项目界面:添加用户名,密码,在另一页面显示用户名。1、创建项目新建一个Android工程命名为test1,目录结构如下图:2、添加布局文件修改main.xml布局文件(这里增加了两个TextView,两个EditView,一个按钮),如下图新建test2.xml布局文件(这里增加了两个TextView),这个页面是用来显示添加的用户名,如下图:3、创建Activity修改test1.java,并且新建一个Activity,一个是test2.java。,代码分别如下:Test1.java作用:获得页面输入的内容,存储并跳转到test2.xml。Test2.java作用:从Intent中获得需要显示name的值,并给TextView赋值。4修改AndroidManifest.xml文件比较重要的一步啦,修改AndroidManifest.xml文件(将新增的Activity,test2) 注册一下,代码如下(第16行):请尝试使用startActivityForResult (Intent intent, int requestCode)方法实现页面的跳转。实验四:service应用一、实验目的本次实验的目的是让大家熟悉service的使用。一个使用Service的典型的例子是,用户一边在手机做其他的事情,一边听手机上的音乐。其中,在后台播放音乐就可以使用Service来实现。并实现简单播放器的小例程。二、实验要求1. 创建项目并熟悉文件目录结构。2. 实现例程简单播放器。三、实验步骤项目界面:1、创建项目新建一个Android工程命名为test1,目录结构如下图: 2、布局文件修改main .Xml文件修改MusciPlayer.java文件,新建MusicService.java文件,代码如下图:MusciPlayer.java文件MusicService.java3、修改AndroidManifest.xml文件比较重要的一步,修改AndroidManifest.xml文件(将新增的service) 注册一下,代码如下(第16行):实验五:SQLite和SQLiteDatabase应用一、实验目的1、本次实验的目的是让大家熟悉Android中对数据库进行操作的相关的接口、类等。SQLiteDatabase这个是在android中数据库操作使用最频繁的一个类。通过它可以实现数据库的创建或打开、创建表、插入数据、删除数据、查询数据、修改数据等操作。2、实现添加用户名,爱好小例程。二、实验要求1、完成Android开发平台的搭建及相关配置2、创建项目并熟悉文件目录结构3、实现例程添加用户名,爱好实验步骤三、实验步骤项目界面:输入用户名,爱好添加到数据库,由数据库查询出来显示插入的列表。当单击列表时会弹出Alert询问是否删除,进行删除操作。1、创建项目新建一个Android工程命名为Database,目录结构如下图:2、布局文件修改main.xml布局文件,添加display.xml文件,用来显示列表。如下图Main.XmlDisplay.xml3、创建Activity修改DatabaseActivity.java文件,新建DBHelper.java文件和displayAvtivity.java,代码如下图:DBHelper.java 操作数据库的工具类,该类继承SQLiteOpenHelper。DatabaseActivity.java 获取页面输入的值,添加到数据库displayAvtivity.java 显示列表,删除数据实验六: 图形绘制与OpenGL ES一、实验目的在屏幕绘制各种图形,了解OpenGL二、实验要求1、了解在屏幕绘图方法2、了解OpenGL三、实验原理四、实验过程1、绘制直线、园、曲线等各种图形2、显示字符3、利用OpenGL ES方法编程Android中的图形系统采用Client/Server架构。Server (即SurfaceFlinger)主要由c+代码编写而成。Client端代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c+写成的底层实现。Android图形系统中通过surface为view创建一个Canvas对象,管理view在surface上的绘图操作。View及其子类(如TextView, Button)要画在surface上。OpenGL ES (OpenGL for Embedded Systems) 是一个针对嵌入式应用的,免费的,支持全功能2D、3D的跨平台API(OpenGL ES is a royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems - including consoles, phones, appliances and vehicles)。目前主要由3个版本,1.0,1.1,2.0。OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的,1.1完全兼容1.0。OpenGL ES 2.0 则是参照 OpenGL 2.0 规范定义的。简单的来说,OpenGL ES是OpenGL针对嵌入式应用的简化版,也就是android使用的标准。OpenGL ES 1.1强调api的硬件加速,OpenGL ES 2.0更强调3D能力。OpenGL ES 1.1和OpenGL ES 2.0之间的关系并不是旧版本和新版本之间的差别,而是一个针对相对低端的应用,一个针对高级应用,OpenGL官方的roadmap也是将这两个版本并行发展的。2.X并不能百分百兼容1.X。Android现在支持1.X和2.X。OpenGL ES是专为内嵌和移动设备设计的一个2D/3D轻量级图形库,它基于OpenGL API设计,是OpenGL三维图形API的子集。Android里有三个与OpenGL有关的包:android.opengljavax.microedition.khronos.egljavax.microedition.khronos.openglespublic void onDrawFrame(GL10 gl) /一般的opengl程序,首先要做的就是清屏gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);/紧接着设置模型视图矩阵gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();/清空矩阵GLU.gluLookAt(gl, 0, 0, 3, 0, 0, 0, 0, 1, 0);/视点变换,将相机位置设置为(0, 0, 3),同时指向(0, 0, 0)点/设置模型位置旋转及缩放信息gl.glTranslatef(0.0f, 0.0f, -1.0f);/将模型位置设置为(0, 0, -1)float angle = 30.0f;gl.glRotatef(angle, 0, 1, 0);/绕模型自身Y轴旋转30度gl.glRotatef(angle, 1, 0, 0);/绕模型自身X轴旋转30度gl.glScalef(1.2f, 1.2f, 1.2f);/设置三方向的缩放系数 /设置颜色 gl.glColor4f(0.0f, 0.0f, 0.0f, 1.0f); /渲染立方体mCube.draw(gl, gl.GL_TRIANGLES); /mCube.draw(gl, gl.GL_LINES); 实验七: 网络访问与服务一、实验目的掌握Android网络访问方法二、实验要求1、了解手机WEB网站访问编程2、通过网络进行数据访问3、了解数据库使用三、实验原理利用Android网络访问协议四、实验过程1、 访问WEB网站,通过HttpResponse类,读入网络数据。Android SDK 网络包:包描述android.netAndroid网络访问 socket。该包包括URI 类,不仅仅是传统的联网方面。 android.net.http处理Android有关Http协议类。 android.net.wifi在 Android 平台上管理有关 WiFi(802.11 无线 Ethernet)应用的类。 android.telephony.gsm包含用于管理和发送 SMS(文本)消息的类。读入WEB数据例程:HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(url);HttpResponse response = client.execute(get);HttpEntity entity = response.getEntity();/尝试读取entity的长度,返回-1表示长度未知long length = entity.getContentLength();InputStream is = entity.getContent();String s = null;if (is != null) ByteArrayOutputStream baos = new ByteArrayOutputStream();byte buf = new byte512;int ch = -1;int count = 0;while (ch = is.read(buf) != -1) baos.write(buf, 0, ch);count += ch;/如果长度已知,可以通过taskProgress()通知监听者任务执行的比例if (length 0) listener.taskProgress(this, count, length);/为了更好的演示进度,让线程休眠100msThread.sleep(100);Log.e(HttpTask, length= + baos.toByteArray().length);/返回内容s = new String(baos.toByteArray();return s;实验八 硬件访问与传感器一、实验目的通过底层API访问手机硬件及手机上的各种传感器二、实验要求1、获取手机上电话、短信等各种功能的编程2、了解手机上各种传感器的功能与使用方法三、实验原理利用手机本身的功能与相关传感器的使用四、实验过程1、了解程序使用手机电话功能的方法短信收发:发送短信只需要几行代码,如下:SmsManager sms = SmsManager.getDefault();PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(), 0);sms.sendTextMessage(phoneNumber, null, MsgStr, pi, null);其中参数phoneNumber和MsgStr均是String类型,表示接收方的电话号码和短信内容接收短信主要是继承BroadcaseReceiver 类 ,覆盖onReceive 函数:package com.android.TinySMS;import android.app.Activity;import android.app.PendingIntent;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.gsm.SmsManager;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class TinySMS extends Activity public static final String SMS_ACTION = com.android.TinySMS.RESULT;/private TextViewmessage; private Buttonsnd; private EditTexttel; private EditTexttxt; private SentReceiver receiver = new SentReceiver(); private class SentReceiver extends BroadcastReceiver Overridepublic void onReceive(Context context, Intent intent) if (intent.getAction().equals(SMS_ACTION) int code = getResultCode(); /短消息发送成功 if(code = Activity.RESULT_OK) Toast.makeText(TinySMS.this, R.string.msg_sent, Toast.LENGTH_SHORT).show(); ; /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); tel = (EditText) findViewById(R.id.EditText01); tel.setText(5554); /模拟器之间互发短信 txt = (EditText) findViewById(R.id.EditText02); txt.setText(我用自己的程序试试发短信。); snd = (Button) findViewById(R.id.Button01); snd.setOnClickListener(new View.OnClickListener() public void onClick(View arg0) String phoneNo = tel.getText().toString(); String message = txt.getText().toString(); if (phoneNo.length()0 & message.length()0) sendSMS(phoneNo, message); else Toast.makeText(TinySMS.this, 请重新输入电话号码和短信内容, Toast.LENGTH_LONG).show(); ); private void sendSMS(String address, String content) SmsManager manager = SmsManager.getDefault(); Intent i = new Intent(SMS_ACTION); /生成PendingIntent,当消息发送完成,接收到广播 PendingIntent sentIntent = PendingIntent.getBroadcast( this, 0, i, PendingIntent.FLAG_ONE_SHOT); manager.sendTextMessage( address, null, content, sentIntent, null); 如果要收发短信,还需在AndroidManifest.xml中声明权限:2、手机上有多种传感器,可以对这些传感器进行编程。Android SDK 中提供的面向硬件的特性特性描述android.hardware.Camera相机交互的类,可以截取照片、获取预览屏幕的图像,修改理相机操作的参数。android.hardware.SensorManager允许访问 Android 平台传感器的类。并非所有配备 Android 的设备都支持 SensorManager 中的所有传感器。android.hardware.SensorListener在传感器值实时更改时,希望接收更新的类要实现的接口。用以监视硬件中一个或多个可用传感器。android.media.MediaRecorder用于录制媒体的类。android.FaceDetector人脸进行基本识别类。android.os.*可以与操作环境交互的包,包括电源管理、文件查看器、处理器和消息类。android.hardware.SensorManager 包含几个常量,这表示 Android 传感器系统的不同方面,包括:传感器类型:方向、加速表、光线、磁场、临近性、温度等。采样率最快、游戏、普通、用户界面。当应用程序请求特定的采样率时,其实只是对传感器子系统的一个提示,或者一个建议。不保证特定的采样率可用。准确性高、低、中、不可靠。SensorListener 接口是传感器应用程序的中心。它包括两个必需方法:onSensorChanged(int sensor,float values) 方法在传感器值更改时调用。该方法只对受此应用程序监视的传感器调用。该方法的参数包括: 一个整数,指示更改的传感器; 一个浮点值数组,表示传感器数据本身。有些传感器只提供一个数据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个数据值。当传感器的准确性更改时,将调用 onAccuracyChanged(int sensor,int accuracy) 方法。参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。要与传感器交互,应用程序必须注册以侦听与一个或多个传感器相关的活动。注册使用 SensorManager 类的 registerListener 方法完成。并非所有支持 Android 的设备都支持 SDK 中定义的所有传感器。以 Android 为中心的传感器系统相机拍摄:package com.android.cameraAndroid;import android.app.Activity;import android.os.Bundle;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import android.content.Context;import android.content.Intent;import android.graphics.PixelFormat;import android.hardware.Camera;import android.hardware.Camera.Parameters;import android.hardware.Camera.PictureCallback;import android.hardware.Camera.ShutterCallback;import android.media.AudioManager;import android.media.ToneGenerator;import android.net.Uri;import android.os.Environment;import android.os.StatFs;import android.view.Menu;import android.view.MenuItem;import android.view.SurfaceHolder;import android.view.SurfaceView;public class CameraAndroid extends Activity private CameraPreview preview;private Camera camera;private ToneGenerator tone;private static final int OPTION_SNAPSHOT = 0;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);preview = new CameraPreview(this);setContentView(preview);Overridepublic boolean onOptionsItemSelected(MenuItem item) int itemId = item.getItemId();switch(itemId)case OPTION_SNAPSHOT:/拍摄照片camera.takePicture(shutterCallback, null, jpegCallback);break;return true;/返回照片的JPEG格式的数据private PictureCallback jpegCallback = new PictureCallback()public void onPictureTaken(byte data, Camera camera) Parameters ps = camera.getParameters();if(ps.getPictureFormat() = PixelFormat.JPEG) /存储拍照获得的图片 String path = save(data); /将图片交给Image程序处理 Uri uri = Uri.fromFile(new File(path); Intent intent = new Intent(); intent.setAction(android.intent.action.VIEW); intent.setDataAndType(uri, image/jpeg); startActivity(intent);/快门按下的时候onShutter()被回调private ShutterCallback shutterCallback = new ShutterCallback()public void onShutter() if(tone = null)/发出提示用户的声音tone = new ToneGenerator(AudioManager.STREAM_MUSIC,ToneGenerator.MAX_VOLUME);tone.startTone(ToneGenerator.TONE_PROP_BEEP2);private String save(byte data)String path = /sdcard/+System.currentTimeMillis()+.jpg;try /判断SD卡上是否有足够的空间String storage = Environment.getExternalStorageDirectory().toString();StatFs fs = new StatFs(storage);long available = fs.getAvailableBlocks()*fs.getBlockSize();if(availabledata.length)/空间不足直接返回空return null;File file = new File(path);if(!file.exists()/创建文件file.createNewFile();FileOutputStream fos = new FileOutputStream(file);fos.write(data);fos.close(); catch (Exception e) e.printStackTrace();return null;return path;Overridepublic boolean onCreateOptionsMenu(Menu menu) menu.add(0, OPTION_SNAPSHOT, 0, R.string.snapshot);return super.onCreateOptionsMenu(menu);class CameraPreview extends SurfaceView implements SurfaceHolder.Callback SurfaceHolder mHolder;public CameraPreview(Context context) super(context);mHolder = getHolder();mHolder.addCallback(this);mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);/Sureface创建的时候,此方法被调用public void surfaceCreated(SurfaceHolder holder) /打开摄像头,获得Camera对象camera = Camera.open();try /设置显示camera.setPreviewDisplay(holder); catch (IOException exception) camera.release();camera = null;/Surface销毁的时候,此方法被调用public void surfaceDestroyed(SurfaceHolder holder) camera.stopPreview();/释放Cameracamera.release();camera = null;public void surfaceChanged(SurfaceHolder holder, int format, int w,int h) /已经获得Surface的width和height,设置Camera的参数Camera.Parameters parameters = camera.getParameters();parameters.setPreviewSize(w, h);camera.setParameters(parameters);/开始预览camera.startPreview();拍摄模拟:实验九: 综合实验题目要求:1、 前台页面美观,控件布局合理,能兼容主流设备的屏幕分辨率。2、 具有SQLiteDatabase实现数据的持久化存储功能。3、 具有一定的实用性。备选题目:1、 记事本程序(可保存记事内容)2、 手机通讯录管理器(可保存通讯录信息)3、 科学计算器(支持多种运算)4、 图片浏览器(搜索SD卡中的所有图片文件)5、 音乐播放器(搜索SD卡中的所有音乐文件)6、 简易小游戏7、 照相软件8、 手电筒软件9、 个人理财小软件10、录音机软件自选题目:学生自拟题目。但是需要满足前面的题目要求。综合实验验收:最后一次实验课前(含最后一次课)向任课老师演示,虚拟机或者手机上均可。提交带详细注释的源代码包及综合实验报告(打印版)。平时实验报告模板 实验题目: 一、实验内容及实验要求:1、2、3、二、本次实验涉及到的关键对象、关键方法、数据结构:三、实验步骤和流程说明(可绘图说明):姓名: 学号: 班级: 成绩: 班级: 学号: 姓名: 四、实验过程及结果总结:五、实验中出现的问题及解决方法综合实验设计实现报告1、 基本信息 题目名称版本学号专业姓名邮件电话2、 软件功能介绍软件的主要功能及实用价值。3、 界面布局的设计阐述界面布局的主要思路:用到了那些布局,如何形成嵌套关系,以示意图的方式表示出来效果最佳。4、 主要Activity或Service的设计阐述为完成程序功能而选择的的主要Activity类内主要的事件响应选择设计思路。5、 重要函数流程图1) 某函数1该函数完成XXX功能,(可写出详细功能描述)。流程图如下:图2 XXX函数流程图2) 某函数26、实验总结实验中遇到的问题及解决措施。实验后的经验总结。报告撰写安排表平时实验每位同学需要写其中两次报告,具体安排如下表,综合实验每位同学都需要撰写设计实现报告。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!