Android应用开发实验指导书_第1页
Android应用开发实验指导书_第2页
Android应用开发实验指导书_第3页
Android应用开发实验指导书_第4页
Android应用开发实验指导书_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

《手机应用开发》

实验指导书

西南科技大学计算机科学与技术学院

2015.11

目录

《手机应用开发》.............................................

实验指导书...................................................

实验一:搭建Android开发平台和创建HolloWorld程序..............

实验目的....................................................

实验要求....................................................

实验内容....................................................

一、安装并配置JavaJDK.................................

二、下载安装集成ADT(AndroidDevelopmentTools插件的Eclipse(即

adt-bundle).............................

三、创建Android虚拟设备(AVD)........................

四、创建第一个Android工程项H—HeiloWorld.............

实验二:UI设计..................................................

实验目的....................................................

实验要求....................................................

实验内容....................................................

一、常用控件............................................

二、界面布局............................................

三、事件处理............................................

实验三:Intent、Activity应用...................................

一、实验目的................................................

二、实验要求................................................

三、实验步骤................................................

1、创建项目.............................................

2、添加布局文件.........................................

4.彳修改AndroidManifest,xml文件........................

实验四:sorvico应用............................................

一、实验目的................................................

二、实验要求................................................

三、实验步骤................................................

1、创建项目.............................................

2、布局文件.............................................

3、修改AndroidManifest.xml文件......................24

实验五:SQLite和SQLiteDatabase应用...........................

一、实验目的................................................

二、实验要求...............................................18

1、创建项目.............................................

2、布局文件.............................................

3、创建Activity........................................

实验六:图形绘制与OpenGLES...................................

一、实验目的................................................

二、实验要求................................................

1、了解在屏幕绘图方法...................................

2、了解OpenGL..........................................

三、实验原理................................................

四、实验过程...............................................23

1、绘制直线、园、曲线等各种图形........................

2、显小字符.............................................

3、利用OpenGLES方法编程...............................

实验七:网络访问与服务.........................................

一、实验目的................................................

二、实验要求................................................

1、了解手机WEB网站访问编程.............................

2、通过网络进行数据访问.................................

3、了解数据库使用.......................................

三、实验原理................................................

四、实验过程................................................

实验八硬件访问与传感器.........................................

一、实验目的................................................

二、实验要求................................................

1、获取手机上电话、短信等各种功能的编程................

2、了解手机上各种传感器的功能与使用方法................

三、实验原理................................................

四、实验过程................................................

1、了解程序使用手机电话功能的方法......................

2、手机上有多种传感器,可以对这些传感器进行编程。.....

实验九:综合实验................................................

平时实验报告模板.................................................

《综合实验》设计实现报告........................................

报告撰写安排表...................................................

注意:平时实验只完成实验一到实验五

实验一:搭建Android开发平台和创建HelloWorld程序

实验目的

本次实验的目的是让同学们熟悉搭建智能手机开发平台的过程,了解

Andorid应用程序项i的基本文件目录结构,并实现HelloWorld小例程。

实验要求

1.学习Android开发平台的搭建及相关配置

2.创建项目并熟悉文件目录结构

3.实现例程HelloWorld

实验内容

一、安装并配置JavaJDK

1.下载安装JDK,网址如下。

(s-2133151.htm)

(1)了解JDK与JRE的区别。

(2)了解JDK不同版本号的区别。

(3)了解jdk-8u65-windows-i586.exe与

jdk-8u65-windows-x64.exe的区别

(4)查看并记录下实验用机上jdk的版本以及安装地址。

2.配置JDK:

XP:右键“我的电脑”?“属性”?“高级”?“环境变量”

WIN7:右健“我的电脑”?“高级系统设置”?“环境变量”

新建系统变量:

JAVAJIOME,(JDK安装目录)。

PATH,%JAVAHOME%\bin;%JAVAH0ME%\jr\bino

CLASSPATH,.;%JAVA_HOME%\lib;%JAVA_HOME%\1ib\too1

s.jar(前面的.;一定要加上)

配置完成后在CMD中输入java-version和javac

-version,能看到对应的JDK版本即配置成功,如下图所示。

请思考设置这三个环境变量的作用。

二、下载安装集成ADT(AndroidDevelopmentTools插件的Eclipse

(即adt-bundle)

1.认识开发工具

根据桌面的eelipse(adt)快捷找到本机上的adt-bundle,打

开并了解其目录结构c

2.认识、使用SDK管理器工具

在adt-bundle文件目录里找到并启动SDKManager,exe,查

看本机目前安装的AndroidSDK插件情况。

3.启动Eclipse

在adt-bundle文件目录里找到并启动eclipse,exe,启动后查

看本机上eclipse配置的工作区位置(工程源代码存放的位置)。

请思考如何使代码编辑区的代码显示行号,如果修改代码区

字符的大小。

三、创建Android虚拟设备(AVD)

1.启动AVD(AndroidVirtualDevice)管理器

在adt-bundle的sdk目录下找到并启动AVDManager.exe

2.尝试创建一台虚拟的目标调试设备,注意物理内存不要设置

太大。

四、创建第一个Android工程项目一HelloWorld

1.打开Eclipse。

2.点击“File"?"New"?"Project”?“AndroidProject

创建HelloWorld项目。

3.输入合法的ApplicationName>ProjectName和PackageName

后一路Next,完成项目的创建。创建成功后的项目文件结构如

下:

找到并查看项目中的如下几个文件:

a)MainActivity.java

b)R.java

c)activity_main.xml

d)strings,xml

e)AndroidManifest.xml

f)Project,properties

4.打开eclipse下方的Problem查看器查看警告。

5.选择项目HelloWorld点击右键RunAs?"Android

Application”,用之前创建的AVD运行此项目。

6.如果运行失败,查看相应的提示信息后,重新跳到步骤1创

建一个新的项目HelloWorld2,创建时将MinimunRequired

SDK设置为Android4.0或以上。

请思考第一次创建的项目为什么会多生成一个appcompat_V7

目录,并且运行失败。更改最低SDK版本后运行成功。

实验二:UI设计

实验目的

本次实验的目的是让同学们熟悉Android开发中的UI设计,包括了

解和熟悉常用控件的使用、界面布局和事件处理等内容。

实验要求

1.熟悉和掌握界面控件设计

2.了解Android界面布局

3.掌握控件的事件处理

实验内容

一、常用控件

1.常用控件介绍

Android中有许多常用控件(简单分类):

文本框:TcxtVicw、EditText

按钮:Button、RadioButton、RadioGroup、CheckBox、ImageButton

歹U表:List^Expandab1eListView、Spinner>AutoCompleteTextView、

GridVieu\TmageView

进度条:ProgressRarxProgressDialogxSeokBar、RatingF^ar

选择器:DatePicker>TimePicker

菜单:Menu、Cor.tentMenu

对话框:Dialog、ProgressDialog

常用的控件有文本框、按钮和列表等。

2.控件的实现

在上一个实验中,我们用一个TextView控件实现了在界面显示一句

“Hell。World!\

现在我们来看一看.xml文件和编码的相互关系。

将MainActivity.java中代码修改如下:

packagecom.example.helloworld;^

importandroid.app.Activity;^

importandroid.os.Bundle;^

importandroid.view.Menu;^

importandroid.view.MenuItem;^

importandroid.widget.Button;^

importandroid,widget.TextView;publicclassMainActivityextendsActivity

/**Calledwhentheactivityisfirstcreated.*/**

(©Override*-1

publicvoidonCreate(BundlesavedlnstanceState){/

super.onCreatefsavedlnstanceState);^

setContentView(R.layout.activity_main);<J

o

TextViewtextView=(TextViewjfindViewByldtR.id.textV/ewOl);^

Buttonbutton=(Button)findViewByld(R.id.6utton01);v

注意在上面并没有为textView和button设置文本内容等,另外

textView的初始化代码为:

TextViewtextView=(TextView)findViewByld(R.id.textViewOl);

此处初始化用到了id为textViewOl的TextViewo

在项FlIR录中找到/res/layout/activity_main.xml,修改代码如下:

<?xmlversion="1.0"encoding="utf-8"?>*-'

<LinearLayoutxmlns:android="/apk/res/android"^

android:orientation="verticar,*'

android:layout_width="fiIl_parentV

android:layout_height=,'fill_parent"*J

x

<TextView-

android:id="@+id/textView01"一

android:layout_width=,,fill_parent"一

android:layout_height="wrap_content"一

android:text="@string/hello_worldn4J

<Button*-1

android:id="@+id/button01"*J

android:layout_width=,,fill_parent,,*J

android:layout_height="wrap_content,'~

android:text="@string/button"v

/>*-1

v/LinearLayout〉/

注意上面列出了两个控件:TextView和Button,id分别为textViewOl

和buttonOl,它们的文本内容分别为@string/hello_world和

©string/buttono

在项目目录中找到/res/values/strings.xml,如下:

<?xmlversion="1.0"encoding="utf-8"?x

〈resources”

<stringname=°app_na/neM>helloworld2</string>J

<stringname=uaction_settingsM>Settings</string”

<stringname=nhe£fo_ivortdM>Helloworld!</string>J

<stringnan\e="button">Iamabutton!</string>^

</resources>"

可以看到两个string:hello和button的内容分别为'HelloTheAndroid

World!w和“Iamabutton!”,即使文本框和按钮在界面上显示的内容,

如下图所示:

3.控件的属性

可以直接在类中为控件设置属性,也可以在xml文件中设置属性。每

个控件都有一系列的属性,例如id、size、text、color等等,大家可

以找找API查看控件的属性。

二、界面布局

Android中有很多布局:

FrameLayout:最简单的一个布局对象。它里面只显示一个显示对象。

Android屏幕元素中所有的显示对象都将会固定在屏幕的左上角,不

能指定位置。但允许有多个显示对象,但后一个将会直接在前一个之

上进行覆盖显示,把前一个部份或全部挡住(除非后一个是透明的)。

LinearLayout:以单一方向对其中的显示对象进行排列显示,如以垂

直排列显示,则布局管理器中将只有一列;如以水平排列显示,见布

局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示

比例。

TableLayout:以拥有任意行列的表格对显示对象进行布局,每个显

示对象被分配到各自的单元格之中,但单元格的边框线不可见。

AbsolutcLayout:允许以坐标的方式,指定显示对象的具体位置,左

上角的坐标为(0,0),向下及向右,坐标值变大。这种布局管理器由

于显示对象的位置定死了,所以在不同的设备上,有可能会出现最终

的显示效果不一致。

RelativeLayout:允许通过指定显示对象相对于其它显示对象或父级

对象的相对位置来布局。如一个按钮可以放于另一个按钮的右边,或

者可以放在布局管理器的中央。

布局中可以放置控件,而每个布局又可以嵌套其他布局,这种思想和

之前学习java的布局是一样的。

例如在activity_main.xml中如下布局:

在一个LinearLayout布局下嵌套了两个LincarLayout,出来的效果

如下图所示:

其他布局请同学们自行尝试。

三、事件处理

事件监听和时间处理的概念大家以前都学习过,android中主要有如

下事件方法:

onClick(Viewv)一个普通的点击按钮事件

booleanonKeyMultiple(intkeyCode,intrepeatCount,KeyEvent

event)用于在多个事件连续时发生,用于按键重复

booleanonKeyDown(intkeyCode,KeyEventevent)用于在按键进行

按下时发生

booleanonKeyUp(intkeyCode,KeyEventevent)用于在按键进行

释放时发生

onTouchEvent(MotionEventevent)触摸屏事件,当在触摸屏上有动

作时发生

booleanonKeyLongPress(intkeyCode,KeyEventevent)当长时间

按时发生

下面以点击一个Button为例子:

为button添加了•个监听buttonListener,对应的onClick方法则

抛出了一则文本框提示用户,效果图如下所示:

其它控件的使用请同学们自行尝试。

实验三:Intent、Activity应用

一、实验目的

本次实验的目的是让同学们熟悉Intent和Activity的使用。Intent

的最常用的用途是绑定应用程序组件。Intern用来在应用程序Activity

间启动、停止和传输。并实现添加用户名,密码小例程。

二、实验要求

1.完成Android开发平台的搭建及相关配置

2.创建项目并熟悉文件目录结构

3.实现例程添加用户名,密码实验步骤

三、实验步骤

项目界面:添加用户名,密码,在另一页面显示用户名。

1、创建项目

新建一个Android工程命名为testl,目录结构如下图:

2、添加布局文件

修改main,xml布局文件(这里增加了两个TextView,两个EditView,一

个按钮),如下图

新建test2.xml布局文件(这里增加了两个TextView),这个页面是

用来显示添加的用户名,如下图:

1<?xmlversion*wl.Owencoding-

2<LmearLayout

xmlns:android""http://schemas.androxd.com/apk/res/android"

,3android:layout_width=Mffiatch_parent"

5android:layout_height-Maatc2i_parent*>

6-<TextViewandroid:texc-w?string/Aeilow

android:2d«"S^-id/textVievln

android:layout_width-"vrap^content”

9aridroid:layout_height"ffurap_contentw/>

10<-<TextViewandroid:id-Hi?*id/editrext2w

11android:layouc_widch-content*|

12android:layout_height""yrap_content**/>

13</LmearLayout>

14

3、创建Activity

修改testl.java,并且新建一个Activity,一个是test2.java。,代

码分别如下:

Testi,java

作用:获得页面输入的内容,存储并跳转到test2.xml。

Test2.java

作用:从Intent中获得需要显示name的值,并给TextView赋值。

4,修改AndroidManifest.xml文件

比较重要的一步啦,修改AndroidManifest.xml文件(将新增的

Activity,test2)注册一下,代码如下(第16行):

请尝试使用startActivityForResult(Intentintent,intrequestCode)

方法实现页面的跳转。

实验四:service应用

一、实验目的

本次实验的目的是让大家熟悉service的使用。一个使用Service

的典型的例子是,用户一边在手机做其他的事情,一边听手机上

的音乐。其中,在后台播放音乐就可以使用Service来实现。并

实现简单播放器的小例程。

二、实验要求

1.创建项目并熟悉文件目录结构。

2.实现例程简单播放器。

三、实验步骤

项目界面:

1、创建项目

新建一个Android工程命名为test1,目录结构如下图:

0music

理src

田tju.service

①MusicPIayer.java

_JjMusicService.java

莎gen[GeneratedJavaFiles]

,Android2.2

assets

阻res

上drawable-hdpi

drawable-ldpi

卷drawable-mdpi

&layout

」main.xml

&raw

区Itest.mp3

values

,:strings.xml

,aAndroidManifestjemI

圜default,properties

proguard.cfg

2、布局文件

修改main.Xml文件

修改MuseiPlayer,java文件,新建MusicService.java文件,代码如下

图:

MusciPlayer.java文件

MusicService.java

3、修改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.Xml

Display,xml

3、创建Activity

修改DatabaseActivity.java文件,新建DBHelper.java文件和

displayAvtivity.java,代码如下图:

DBHelper.java操作数据库的工具类,该类继承SQLiteOpenHelpero

DatabaseActivity.java获取页面输入的值,添加到数据库

displayAvtivity.java显示列表,删除数据

实验六:图形绘制与OpenGLES

一、实验目的

在屏幕绘制各种图形,了解OpenGL

二、实验要求

1、了解在屏幕绘图方法

2、了解OpenGL

三、实验原理

四、实验过程

1、绘制直线、园、曲线等各种图形

2、显示字符

3、利用OpenGLES方法编程

Android中的图形系统采用Client/Server架构。Server(即

SurfaceFlinger)主要由C++代码编写而成。Client端代码分为两部分,

一部分是由Java提供的供应用使用的api,另一部分则是由C++写成的底

层实现。

Android图形系统中通过surface为view创建一个Canvas对象,管理

view在surface上的绘图操作。View及其子类(如TextView,Button)

要画在surface上。

OpenGLES(OpenGLforEmbeddedSystems)是一个针对嵌入式应用

的,免费的,支持全功能2D、3D的跨平台API(OpenGL?ESisaroyalty-free,

cross-platformAPIforfull-function2Dand3Dgraphicsonembedded

systems-includingconsoles,phones,appliancesandvehicles)。

目前主要由3个版本,LO,1.1,2.0o

OpenGLES1.0是以OpenGL1.3规范为基础的,OpenGLES1.1是

以OpenGL1.5规范为基础的,1.1完全兼容1.0。OpenGLES2.0则是

参照OpenGL2.0规范定义的。简单的来说,OpenGLES是OpenGL针对嵌

入式应用的简化版,也就是android使用的标准。OpenGLES1.1强调api

的硬件加速,OpenGLES2.0更强调3D能力。

OpenGLES1.1和OpenGLES2.0之间的关系并不是旧版本和新版本之

间的差别,而是一个针对相对低端的应用,一个针对高级应用,OpenGL官

方的roadmap也是将这两个版本并行发展的。2.X并不能百分百兼容1.X。

Android现在支持1.X和2.X。OpenGLES是专为内嵌和移动设备设计

的一个2D/3D轻量级图形库,它基于OpenGLAPI设计,是OpenGL三维图

形API的子集。Android里有三个与OpenGL有关的包:

android.opengl

publicvoidonDrawFrame(GL10gl){

〃一般的。pongl程序,首先要做的就是清屏

gl.glClear(GL10.GL_COLOR_BUFFER_BIT\

GL10.GL_DEPTH_BUFFER_BIT);

〃紧接着设置模型视图矩阵

gl.glMatrixMode(GL10.GLJIODELVIE^);

gl.glLoadldentity();〃清空矩阵

GLU.gluLookAt^,0,0,3,0,0,0,0,1,0);〃视点变换,

将相机位置设置为(0,0,3),同时指向(0,0,0)点

〃设置模型位置旋转及缩放信息

gl.glTranslatef(O.Of,0.Of,-1.Of);〃将模型位置设置为(0,

0,-1)

floatangle=30.Of;

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.Of,0.Of,0.Of,1.Of);

〃渲染立方体

mCube.draw(gl,gl.GLTRIANGLES);

//mCube.draw(gl,gl.GL_LINES);

}

实验七:网络访问与服务

一、实验目的

掌握Android网络访问方法

二、实验要求

1、了解手机WEB网站访问编程

2、通过网络进行数据访问

3、了解数据库使用

三、实验原理

利用Android网络访问协议

四、实验过程

1、访问WEB网站,通过HttpResponse类,读入网络数据。

AndroidSDK网络包:

包描述

android,netAndroid网络访问socketo该包包括URI类,不仅

仅是传统的联网方面。

处理Android有关Http协议类。

在Android平台上管理有关WiFi(802.11无线

Ethernet)应用的类。

包含用于管理和发送SMS(文本)消息的类。

读入WEB数据例程:

HttpClientclient=newDefaultHttpClient();

HttpGetget=newHttpGet(url);

IlttpResponseresponse=client.execute(get);

HttpEntityentity=response.getEntityO;

〃尝试读取entity的长度,返回-1表示长度未知

longlength=entity.getContentLengthO;

TnputStreamis=entity.getConter.t();

Strings=null;

if(is!=null){

ByteArrayOutputStreambaos=new

ByteArrayOutputStream();

byte[]buf=newbyte[512];

intch=-1;

intcount=0;

while((ch=is.read(buf))!=-1){

baos.write(buf,0,ch);

count+=ch;

〃如果长度已知,可以通过taskProgrossO通知监听者任

务执行的比例

if(length>0){

listener.taskProgress(this,count,length);

)

〃为了更好的演示进度,让线程休眠100ms

Thread,s/ee,(100);

)

Log.e(〃HttpTask〃,“length=〃+

baos.toByteArray().1ength);

〃返回内容

s=newString(baos.toByteArray());

)

returns;

实验八硬件访问与传感器

一、实验目的

通过底层API访问手机硬件及手机上的各种传感器

二、实验要求

1、获取手机上电话、短信等各种功能的编程

2、了解手机上各种传感器的功能与使用方法

三、实验原理

利用手机本身的功能与相关传感器的使用

四、实验过程

1、了解程序使用手机电话功能的方法

短信收发:

♦发送短信只需要几行代码,如下:

SmsManagersms=SmsManager.getDefault();

PendingTntentpi=Pendingintent.getBroadcast(this,0,new

Intent(),0);

sms.sendTcxtMossage(phonoNumbor,null,klsgStr,pi,null);

其中参数phoneNumber和MsgStr均是String类型,表示接收方的电话号

码和短信内容

♦接收短信主要是继承BroadcascRcccivcr类,覆盖onReceive函数:

package

import

import;

import

import

import

import

import

import

import

import

import

publicclassTinySMSextendsActivity{

publicstaticfinalStringSMS_ACTION=;

//privateTextViewmessage;

privateButtonsnd;

privateEditTexttel;

privateEditTexttxt;

privateSentReceiverreceiver=newSentReceiver();

privateclassSentReceiverextendsBroadcastReceiver{

©Override

publicvoidonReceive(Contextcontext,Intentintent){

if(intent.getAction().equals){

intcode=getResultCodeO;

〃短消息发送成功

if(code==Activity.RESULT_OK)

Toast.makeTextiyinySMS.this,R.string.msg_senti

Toast.LENGTHSHORT),show();

)

)

);

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedlnstanceState){

super.onCreate(savedlnstanceState);

setContentView(R.layout,ma//?);

tel=(EditText)findViewByld(R.id.EditTextOl);

tel.setText(〃5554〃);〃模拟器之间互发短信

txt=(EditText)findViewByld(R.id.EditTextO2);

txt.setText]〃我用自己的程序试试发短信。〃);

snd=(Button)findViewByld(R.ButtonOl);

snd.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(ViewargO){

StringphoneNo=tel.getText().toStringO;

Stringmessage=txt.getText().toString();

if(phoneNo.length()>0&&message,length()>0){

sendSMS(phoneNo,message);

}else(

Tcast.makeTex(TinySMS.this,

〃请重新输入电话号码和短信内容〃,

Toast.LENGTH_LON(J).show();

}

}

));

)

privatevoidsendSMS(Stringaddress,Stringcontent)

{

SmsManagermanager=SmsManager.gelDefaultQ;

Intenti=newIntent(^SMS_ACT10^;

〃生成Pendingintent,当消息发送完成,接收到广播

Pendingintentsentlntent二Pendingintent.getBroadcast^

this,

0,

i,

Pendingintent.FLAG_ONE_SHOT);

manager.sendTextMessage(

address,

null,

content,

sentlntent,

null);

如果要收发短信,还需在AndroidManifest.xml中声明权限:

<uses-permissionandroid:name=X/uses-permission>

<uses-permissionandroid:name=X/uses-permission>

2、手机上有多种传感器,可以对这些传感器进行编程。

AndroidSDK中提供的面向硬件的特性

特性描述

相机交互的类,可以截取照片、获取预览屏幕的

图像,修改理相机操作的参数。

允许访问Android平台传感器的类。并非所有

配备Android的设备都支持SensorManager

中的所有传感器。

在传感器值实时更改时,希望接收更新的类要实

现的接口。用以监视硬件中一个或多个可用传感

器。

用于录制媒体的类。

android.FaceDetector人脸进行基本识别类。

android,os.*可以与操作环境交互的包,包括电源管理、文件

查看器、处理器和消息类。

包含几个常量,这表示Android传感器系统的不同方面,包括:

传感器类型:方向、加速表、光线、磁场、临近性、温度等。采样率

最快、游戏、普通、用户界面。

当应用程序请求特定的采样率时,其实只是对传感器子系统的一个提

示,或者一个建议。不保证特定的采样率可用。准确性高、低、中、不可

靠。

ScnsorListcncr接口是传感器应用程序的中心。它包括两个必需方

法:

onSensorChangec(intsensor,floatvalues]])方法在传感器值更改

时调用。该方法只对受此应用程序监视的传感器调用。该方法的参数包括:

一个整数,指示更改的传感器;

一个浮点值数组,表示传感器数据本身。有些传感器只提供一个数

据值,另一些则提供三个浮点值。方向和加速表传感器都提供三个

数据值。

当传感器的准确性更改时,将调用onAccuracyChangcd[int

sensor,intaccuracy)方法。参数包括两个整数:一个表示传感器,另

一个表示该传感器新的准确值。

要与传感器交互,应用程序必须注册以侦听与一个或多个传感器相关

的活动。注册使用SensorManager类的registerListener方法完成。

并非所有支持Android的设备都支持SDK中定义的所有传感器。

以Android为中心的传感器系统

相机拍摄:

publicclassCameraAndroidextendsActivity{

privateCamerapreviewpreview;

privateCameracamera;

privateToneGereratortone;

privatestaticfinalintOPTION_SNAPSIIOT=0;

©Override

publicvoidonCreate(BundlesavedlnstanceState){

super.onCreate(savedlnstanceState);

preview二newCameraPreview(this);

setContentView(preview);

}

©Override

publicbooleanonOptions11emSe1ected(MenuItemi

intitemTd=item,getltemld();

switch(itemld){

caseOPTIONSNAPSHOT:

〃拍摄照片

camera.takePicture(shutterCallback,null,

JpegCallback);

break;

returntrue;

}

〃返回照片的JPEG格式的数据

privatePictureCallbackjpegCallback=newPictureCallback()(

publicvoidonPictureTaken(byte[]data,Cameracamera){

Parametersps=camera.getParameters();

if(ps.getPictureFormat()==PixelFormat.JPEG){

〃存储拍照获得的图片

Stringpath=save(data);

〃将图片交给Image程序处理

Uriuri=Uri.fromFile(newFile(path));

Intentintent=newIntent();

intent.setDataAndType(uri,image/jpegz/);

startActivity(intent);

)

);

〃快门按下的时候onShutter()被回调

privateShutterCallbackshutterCallback=new

ShutterCallbackO{

publicvoidonShutter(){

if(tone==null)

〃发出提示用户的声音

tone=newToneGenerator(AudioManager.STREAMMUSIC,

ToneGenerator.MAX_VOLUME);

tone.startTone(ToneGenerator.TONE_PROP_BEEP2);

)

};

privateStringsave(byte[]data){

Stringpath

〃/sdcard/^+System.currentTimeMillis()+〃.jpg〃;

try{

〃判断SD卡上是否有足够的空间

Stringstorage

Environment.getExternalStorageDirectory().toStringO;

StatFsfs=newStatFs(storage);

longavailable

fs.getAvailableBlocks()*fs.getBlockSizeO;

if(available<data.length){

〃空间不足直接返回空

returnnull;

}

Filefile=newFile(path);

if(!file,exists())

〃创建文件

file.createNewFileO;

FileOutputStreamfos=newFileOutputStream(file);

fos.write(data);

温馨提示

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

评论

0/150

提交评论