Android應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
Android應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
Android應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
Android應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
Android應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《手機(jī)應(yīng)用開(kāi)發(fā)》

實(shí)驗(yàn)指導(dǎo)書(shū)

西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

2015.11

目錄

《手機(jī)應(yīng)用開(kāi)發(fā)》.............................................

實(shí)驗(yàn)指導(dǎo)書(shū)...................................................

實(shí)驗(yàn)一:搭建Android開(kāi)發(fā)平臺(tái)和創(chuàng)建HolloWorld程序..............

實(shí)驗(yàn)?zāi)康?...................................................

實(shí)驗(yàn)要求....................................................

實(shí)驗(yàn)內(nèi)容....................................................

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

二、下載安裝集成ADT(AndroidDevelopmentTools插件的Eclipse(即

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

三、創(chuàng)建Android虛擬設(shè)備(AVD)........................

四、創(chuàng)建第一個(gè)Android工程項(xiàng)H—HeiloWorld.............

實(shí)驗(yàn)二:UI設(shè)計(jì)..................................................

實(shí)驗(yàn)?zāi)康?...................................................

實(shí)驗(yàn)要求....................................................

實(shí)驗(yàn)內(nèi)容....................................................

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

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

三、事件處理............................................

實(shí)驗(yàn)三:Intent、Activity應(yīng)用...................................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求................................................

三、實(shí)驗(yàn)步驟................................................

1、創(chuàng)建項(xiàng)目.............................................

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

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

實(shí)驗(yàn)四:sorvico應(yīng)用............................................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求................................................

三、實(shí)驗(yàn)步驟................................................

1、創(chuàng)建項(xiàng)目.............................................

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

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

實(shí)驗(yàn)五:SQLite和SQLiteDatabase應(yīng)用...........................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求...............................................18

1、創(chuàng)建項(xiàng)目.............................................

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

3、創(chuàng)建Activity........................................

實(shí)驗(yàn)六:圖形繪制與OpenGLES...................................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求................................................

1、了解在屏幕繪圖方法...................................

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

三、實(shí)驗(yàn)原理................................................

四、實(shí)驗(yàn)過(guò)程...............................................23

1、繪制直線(xiàn)、園、曲線(xiàn)等各種圖形........................

2、顯小字符.............................................

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

實(shí)驗(yàn)七:網(wǎng)絡(luò)訪(fǎng)問(wèn)與服務(wù).........................................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求................................................

1、了解手機(jī)WEB網(wǎng)站訪(fǎng)問(wèn)編程.............................

2、通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn).................................

3、了解數(shù)據(jù)庫(kù)使用.......................................

三、實(shí)驗(yàn)原理................................................

四、實(shí)驗(yàn)過(guò)程................................................

實(shí)驗(yàn)八硬件訪(fǎng)問(wèn)與傳感器.........................................

一、實(shí)驗(yàn)?zāi)康?...............................................

二、實(shí)驗(yàn)要求................................................

1、獲取手機(jī)上電話(huà)、短信等各種功能的編程................

2、了解手機(jī)上各種傳感器的功能與使用方法................

三、實(shí)驗(yàn)原理................................................

四、實(shí)驗(yàn)過(guò)程................................................

1、了解程序使用手機(jī)電話(huà)功能的方法......................

2、手機(jī)上有多種傳感器,可以對(duì)這些傳感器進(jìn)行編程。.....

實(shí)驗(yàn)九:綜合實(shí)驗(yàn)................................................

平時(shí)實(shí)驗(yàn)報(bào)告模板.................................................

《綜合實(shí)驗(yàn)》設(shè)計(jì)實(shí)現(xiàn)報(bào)告........................................

報(bào)告撰寫(xiě)安排表...................................................

注意:平時(shí)實(shí)驗(yàn)只完成實(shí)驗(yàn)一到實(shí)驗(yàn)五

實(shí)驗(yàn)一:搭建Android開(kāi)發(fā)平臺(tái)和創(chuàng)建HelloWorld程序

實(shí)驗(yàn)?zāi)康?/p>

本次實(shí)驗(yàn)的目的是讓同學(xué)們熟悉搭建智能手機(jī)開(kāi)發(fā)平臺(tái)的過(guò)程,了解

Andorid應(yīng)用程序項(xiàng)i的基本文件目錄結(jié)構(gòu),并實(shí)現(xiàn)HelloWorld小例程。

實(shí)驗(yàn)要求

1.學(xué)習(xí)Android開(kāi)發(fā)平臺(tái)的搭建及相關(guān)配置

2.創(chuàng)建項(xiàng)目并熟悉文件目錄結(jié)構(gòu)

3.實(shí)現(xiàn)例程HelloWorld

實(shí)驗(yàn)內(nèi)容

一、安裝并配置JavaJDK

1.下載安裝JDK,網(wǎng)址如下。

(s-2133151.htm)

(1)了解JDK與JRE的區(qū)別。

(2)了解JDK不同版本號(hào)的區(qū)別。

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

jdk-8u65-windows-x64.exe的區(qū)別

(4)查看并記錄下實(shí)驗(yàn)用機(jī)上jdk的版本以及安裝地址。

2.配置JDK:

XP:右鍵“我的電腦”?“屬性”?“高級(jí)”?“環(huán)境變量”

WIN7:右健“我的電腦”?“高級(jí)系統(tǒng)設(shè)置”?“環(huán)境變量”

新建系統(tǒng)變量:

JAVAJIOME,(JDK安裝目錄)。

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

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

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

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

-version,能看到對(duì)應(yīng)的JDK版本即配置成功,如下圖所示。

請(qǐng)思考設(shè)置這三個(gè)環(huán)境變量的作用。

二、下載安裝集成ADT(AndroidDevelopmentTools插件的Eclipse

(即adt-bundle)

1.認(rèn)識(shí)開(kāi)發(fā)工具

根據(jù)桌面的eelipse(adt)快捷找到本機(jī)上的adt-bundle,打

開(kāi)并了解其目錄結(jié)構(gòu)c

2.認(rèn)識(shí)、使用SDK管理器工具

在adt-bundle文件目錄里找到并啟動(dòng)SDKManager,exe,查

看本機(jī)目前安裝的AndroidSDK插件情況。

3.啟動(dòng)Eclipse

在adt-bundle文件目錄里找到并啟動(dòng)eclipse,exe,啟動(dòng)后查

看本機(jī)上eclipse配置的工作區(qū)位置(工程源代碼存放的位置)。

請(qǐng)思考如何使代碼編輯區(qū)的代碼顯示行號(hào),如果修改代碼區(qū)

字符的大小。

三、創(chuàng)建Android虛擬設(shè)備(AVD)

1.啟動(dòng)AVD(AndroidVirtualDevice)管理器

在adt-bundle的sdk目錄下找到并啟動(dòng)AVDManager.exe

2.嘗試創(chuàng)建一臺(tái)虛擬的目標(biāo)調(diào)試設(shè)備,注意物理內(nèi)存不要設(shè)置

太大。

四、創(chuàng)建第一個(gè)Android工程項(xiàng)目一HelloWorld

1.打開(kāi)Eclipse。

2.點(diǎn)擊“File"?"New"?"Project”?“AndroidProject

創(chuàng)建HelloWorld項(xiàng)目。

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

后一路Next,完成項(xiàng)目的創(chuàng)建。創(chuàng)建成功后的項(xiàng)目文件結(jié)構(gòu)如

下:

找到并查看項(xiàng)目中的如下幾個(gè)文件:

a)MainActivity.java

b)R.java

c)activity_main.xml

d)strings,xml

e)AndroidManifest.xml

f)Project,properties

4.打開(kāi)eclipse下方的Problem查看器查看警告。

5.選擇項(xiàng)目HelloWorld點(diǎn)擊右鍵RunAs?"Android

Application”,用之前創(chuàng)建的AVD運(yùn)行此項(xiàng)目。

6.如果運(yùn)行失敗,查看相應(yīng)的提示信息后,重新跳到步驟1創(chuàng)

建一個(gè)新的項(xiàng)目HelloWorld2,創(chuàng)建時(shí)將MinimunRequired

SDK設(shè)置為Android4.0或以上。

請(qǐng)思考第一次創(chuàng)建的項(xiàng)目為什么會(huì)多生成一個(gè)appcompat_V7

目錄,并且運(yùn)行失敗。更改最低SDK版本后運(yùn)行成功。

實(shí)驗(yàn)二:UI設(shè)計(jì)

實(shí)驗(yàn)?zāi)康?/p>

本次實(shí)驗(yàn)的目的是讓同學(xué)們熟悉Android開(kāi)發(fā)中的UI設(shè)計(jì),包括了

解和熟悉常用控件的使用、界面布局和事件處理等內(nèi)容。

實(shí)驗(yàn)要求

1.熟悉和掌握界面控件設(shè)計(jì)

2.了解Android界面布局

3.掌握控件的事件處理

實(shí)驗(yàn)內(nèi)容

一、常用控件

1.常用控件介紹

Android中有許多常用控件(簡(jiǎn)單分類(lèi)):

文本框:TcxtVicw、EditText

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

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

GridVieu\TmageView

進(jìn)度條:ProgressRarxProgressDialogxSeokBar、RatingF^ar

選擇器:DatePicker>TimePicker

菜單:Menu、Cor.tentMenu

對(duì)話(huà)框:Dialog、ProgressDialog

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

2.控件的實(shí)現(xiàn)

在上一個(gè)實(shí)驗(yàn)中,我們用一個(gè)TextView控件實(shí)現(xiàn)了在界面顯示一句

“Hell。World!\

現(xiàn)在我們來(lái)看一看.xml文件和編碼的相互關(guān)系。

將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

注意在上面并沒(méi)有為textView和button設(shè)置文本內(nèi)容等,另外

textView的初始化代碼為:

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

此處初始化用到了id為textViewOl的TextViewo

在項(xiàng)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〉/

注意上面列出了兩個(gè)控件:TextView和Button,id分別為textViewOl

和buttonOl,它們的文本內(nèi)容分別為@string/hello_world和

?string/buttono

在項(xiàng)目目錄中找到/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>"

可以看到兩個(gè)string:hello和button的內(nèi)容分別為'HelloTheAndroid

World!w和“Iamabutton!”,即使文本框和按鈕在界面上顯示的內(nèi)容,

如下圖所示:

3.控件的屬性

可以直接在類(lèi)中為控件設(shè)置屬性,也可以在xml文件中設(shè)置屬性。每

個(gè)控件都有一系列的屬性,例如id、size、text、color等等,大家可

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

二、界面布局

Android中有很多布局:

FrameLayout:最簡(jiǎn)單的一個(gè)布局對(duì)象。它里面只顯示一個(gè)顯示對(duì)象。

Android屏幕元素中所有的顯示對(duì)象都將會(huì)固定在屏幕的左上角,不

能指定位置。但允許有多個(gè)顯示對(duì)象,但后一個(gè)將會(huì)直接在前一個(gè)之

上進(jìn)行覆蓋顯示,把前一個(gè)部份或全部擋?。ǔ呛笠粋€(gè)是透明的)。

LinearLayout:以單一方向?qū)ζ渲械娘@示對(duì)象進(jìn)行排列顯示,如以垂

直排列顯示,則布局管理器中將只有一列;如以水平排列顯示,見(jiàn)布

局管理器中將只有一行。同時(shí),它還可以對(duì)個(gè)別的顯示對(duì)象設(shè)置顯示

比例。

TableLayout:以擁有任意行列的表格對(duì)顯示對(duì)象進(jìn)行布局,每個(gè)顯

示對(duì)象被分配到各自的單元格之中,但單元格的邊框線(xiàn)不可見(jiàn)。

AbsolutcLayout:允許以坐標(biāo)的方式,指定顯示對(duì)象的具體位置,左

上角的坐標(biāo)為(0,0),向下及向右,坐標(biāo)值變大。這種布局管理器由

于顯示對(duì)象的位置定死了,所以在不同的設(shè)備上,有可能會(huì)出現(xiàn)最終

的顯示效果不一致。

RelativeLayout:允許通過(guò)指定顯示對(duì)象相對(duì)于其它顯示對(duì)象或父級(jí)

對(duì)象的相對(duì)位置來(lái)布局。如一個(gè)按鈕可以放于另一個(gè)按鈕的右邊,或

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

布局中可以放置控件,而每個(gè)布局又可以嵌套其他布局,這種思想和

之前學(xué)習(xí)java的布局是一樣的。

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

在一個(gè)LinearLayout布局下嵌套了兩個(gè)LincarLayout,出來(lái)的效果

如下圖所示:

其他布局請(qǐng)同學(xué)們自行嘗試。

三、事件處理

事件監(jiān)聽(tīng)和時(shí)間處理的概念大家以前都學(xué)習(xí)過(guò),android中主要有如

下事件方法:

onClick(Viewv)一個(gè)普通的點(diǎn)擊按鈕事件

booleanonKeyMultiple(intkeyCode,intrepeatCount,KeyEvent

event)用于在多個(gè)事件連續(xù)時(shí)發(fā)生,用于按鍵重復(fù)

booleanonKeyDown(intkeyCode,KeyEventevent)用于在按鍵進(jìn)行

按下時(shí)發(fā)生

booleanonKeyUp(intkeyCode,KeyEventevent)用于在按鍵進(jìn)行

釋放時(shí)發(fā)生

onTouchEvent(MotionEventevent)觸摸屏事件,當(dāng)在觸摸屏上有動(dòng)

作時(shí)發(fā)生

booleanonKeyLongPress(intkeyCode,KeyEventevent)當(dāng)長(zhǎng)時(shí)間

按時(shí)發(fā)生

下面以點(diǎn)擊一個(gè)Button為例子:

為button添加了?個(gè)監(jiān)聽(tīng)buttonListener,對(duì)應(yīng)的onClick方法則

拋出了一則文本框提示用戶(hù),效果圖如下所示:

其它控件的使用請(qǐng)同學(xué)們自行嘗試。

實(shí)驗(yàn)三:Intent、Activity應(yīng)用

一、實(shí)驗(yàn)?zāi)康?/p>

本次實(shí)驗(yàn)的目的是讓同學(xué)們熟悉Intent和Activity的使用。Intent

的最常用的用途是綁定應(yīng)用程序組件。Intern用來(lái)在應(yīng)用程序Activity

間啟動(dòng)、停止和傳輸。并實(shí)現(xiàn)添加用戶(hù)名,密碼小例程。

二、實(shí)驗(yàn)要求

1.完成Android開(kāi)發(fā)平臺(tái)的搭建及相關(guān)配置

2.創(chuàng)建項(xiàng)目并熟悉文件目錄結(jié)構(gòu)

3.實(shí)現(xiàn)例程添加用戶(hù)名,密碼實(shí)驗(yàn)步驟

三、實(shí)驗(yàn)步驟

項(xiàng)目界面:添加用戶(hù)名,密碼,在另一頁(yè)面顯示用戶(hù)名。

1、創(chuàng)建項(xiàng)目

新建一個(gè)Android工程命名為testl,目錄結(jié)構(gòu)如下圖:

2、添加布局文件

修改main,xml布局文件(這里增加了兩個(gè)TextView,兩個(gè)EditView,一

個(gè)按鈕),如下圖

新建test2.xml布局文件(這里增加了兩個(gè)TextView),這個(gè)頁(yè)面是

用來(lái)顯示添加的用戶(hù)名,如下圖:

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、創(chuàng)建Activity

修改testl.java,并且新建一個(gè)Activity,一個(gè)是test2.java。,代

碼分別如下:

Testi,java

作用:獲得頁(yè)面輸入的內(nèi)容,存儲(chǔ)并跳轉(zhuǎn)到test2.xml。

Test2.java

作用:從Intent中獲得需要顯示name的值,并給TextView賦值。

4,修改AndroidManifest.xml文件

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

Activity,test2)注冊(cè)一下,代碼如下(第16行):

請(qǐng)嘗試使用startActivityForResult(Intentintent,intrequestCode)

方法實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn)。

實(shí)驗(yàn)四:service應(yīng)用

一、實(shí)驗(yàn)?zāi)康?/p>

本次實(shí)驗(yàn)的目的是讓大家熟悉service的使用。一個(gè)使用Service

的典型的例子是,用戶(hù)一邊在手機(jī)做其他的事情,一邊聽(tīng)手機(jī)上

的音樂(lè)。其中,在后臺(tái)播放音樂(lè)就可以使用Service來(lái)實(shí)現(xiàn)。并

實(shí)現(xiàn)簡(jiǎn)單播放器的小例程。

二、實(shí)驗(yàn)要求

1.創(chuàng)建項(xiàng)目并熟悉文件目錄結(jié)構(gòu)。

2.實(shí)現(xiàn)例程簡(jiǎn)單播放器。

三、實(shí)驗(yàn)步驟

項(xiàng)目界面:

1、創(chuàng)建項(xiàng)目

新建一個(gè)Android工程命名為test1,目錄結(jié)構(gòu)如下圖:

0music

理src

田tju.service

①M(fèi)usicPIayer.java

_JjMusicService.java

莎gen[GeneratedJavaFiles]

,Android2.2

assets

阻res

上drawable-hdpi

drawable-ldpi

卷drawable-mdpi

&layout

」main.xml

&raw

區(qū)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)注冊(cè)一下,代碼如下(第16行):

實(shí)驗(yàn)五:SQLite和SQLiteDatabase應(yīng)用

一、實(shí)驗(yàn)?zāi)康?/p>

1、本次實(shí)驗(yàn)的目的是讓大家熟悉Android中對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的相關(guān)的

接口、類(lèi)等。SQLiteDatabase這個(gè)是在android中數(shù)據(jù)庫(kù)操作使用最頻

繁的一個(gè)類(lèi)。通過(guò)它可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的創(chuàng)建或打開(kāi)、創(chuàng)建表、插入數(shù)據(jù)、

刪除數(shù)據(jù)、查詢(xún)數(shù)據(jù)、修改數(shù)據(jù)等操作。

2、實(shí)現(xiàn)添加用戶(hù)名,愛(ài)好小例程。

二、實(shí)驗(yàn)要求

1、完成Android開(kāi)發(fā)平臺(tái)的搭建及相關(guān)配置

2、創(chuàng)建項(xiàng)目并熟悉文件目錄結(jié)構(gòu)

3、實(shí)現(xiàn)例程添加用戶(hù)名,愛(ài)好實(shí)驗(yàn)步躲

三、實(shí)驗(yàn)步驟

項(xiàng)目界面:輸入用戶(hù)名,愛(ài)好添加到數(shù)據(jù)庫(kù),由數(shù)據(jù)庫(kù)查詢(xún)出來(lái)顯

示插入的列表“當(dāng)單擊列表時(shí)會(huì)彈出Alert詢(xún)問(wèn)是否刪除,進(jìn)行刪除操

作。

1、創(chuàng)建項(xiàng)目

新建一個(gè)Android工程命名為Database,目錄結(jié)構(gòu)如下圖:

2、布局文件

修改main,xml布局文件,添加display,xml文件,用來(lái)顯示列表。

如下圖

Main.Xml

Display,xml

3、創(chuàng)建Activity

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

displayAvtivity.java,代碼如下圖:

DBHelper.java操作數(shù)據(jù)庫(kù)的工具類(lèi),該類(lèi)繼承SQLiteOpenHelpero

DatabaseActivity.java獲取頁(yè)面輸入的值,添加到數(shù)據(jù)庫(kù)

displayAvtivity.java顯示列表,刪除數(shù)據(jù)

實(shí)驗(yàn)六:圖形繪制與OpenGLES

一、實(shí)驗(yàn)?zāi)康?/p>

在屏幕繪制各種圖形,了解OpenGL

二、實(shí)驗(yàn)要求

1、了解在屏幕繪圖方法

2、了解OpenGL

三、實(shí)驗(yàn)原理

四、實(shí)驗(yàn)過(guò)程

1、繪制直線(xiàn)、園、曲線(xiàn)等各種圖形

2、顯示字符

3、利用OpenGLES方法編程

Android中的圖形系統(tǒng)采用Client/Server架構(gòu)。Server(即

SurfaceFlinger)主要由C++代碼編寫(xiě)而成。Client端代碼分為兩部分,

一部分是由Java提供的供應(yīng)用使用的api,另一部分則是由C++寫(xiě)成的底

層實(shí)現(xiàn)。

Android圖形系統(tǒng)中通過(guò)surface為view創(chuàng)建一個(gè)Canvas對(duì)象,管理

view在surface上的繪圖操作。View及其子類(lèi)(如TextView,Button)

要畫(huà)在surface上。

OpenGLES(OpenGLforEmbeddedSystems)是一個(gè)針對(duì)嵌入式應(yīng)用

的,免費(fèi)的,支持全功能2D、3D的跨平臺(tái)API(OpenGL?ESisaroyalty-free,

cross-platformAPIforfull-function2Dand3Dgraphicsonembedded

systems-includingconsoles,phones,appliancesandvehicles)。

目前主要由3個(gè)版本,LO,1.1,2.0o

OpenGLES1.0是以O(shè)penGL1.3規(guī)范為基礎(chǔ)的,OpenGLES1.1是

以O(shè)penGL1.5規(guī)范為基礎(chǔ)的,1.1完全兼容1.0。OpenGLES2.0則是

參照OpenGL2.0規(guī)范定義的。簡(jiǎn)單的來(lái)說(shuō),OpenGLES是OpenGL針對(duì)嵌

入式應(yīng)用的簡(jiǎn)化版,也就是android使用的標(biāo)準(zhǔn)。OpenGLES1.1強(qiáng)調(diào)api

的硬件加速,OpenGLES2.0更強(qiáng)調(diào)3D能力。

OpenGLES1.1和OpenGLES2.0之間的關(guān)系并不是舊版本和新版本之

間的差別,而是一個(gè)針對(duì)相對(duì)低端的應(yīng)用,一個(gè)針對(duì)高級(jí)應(yīng)用,OpenGL官

方的roadmap也是將這兩個(gè)版本并行發(fā)展的。2.X并不能百分百兼容1.X。

Android現(xiàn)在支持1.X和2.X。OpenGLES是專(zhuān)為內(nèi)嵌和移動(dòng)設(shè)備設(shè)計(jì)

的一個(gè)2D/3D輕量級(jí)圖形庫(kù),它基于OpenGLAPI設(shè)計(jì),是OpenGL三維圖

形API的子集。Android里有三個(gè)與OpenGL有關(guān)的包:

android.opengl

publicvoidonDrawFrame(GL10gl){

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

gl.glClear(GL10.GL_COLOR_BUFFER_BIT\

GL10.GL_DEPTH_BUFFER_BIT);

〃緊接著設(shè)置模型視圖矩陣

gl.glMatrixMode(GL10.GLJIODELVIE^);

gl.glLoadldentity();〃清空矩陣

GLU.gluLookAt^,0,0,3,0,0,0,0,1,0);〃視點(diǎn)變換,

將相機(jī)位置設(shè)置為(0,0,3),同時(shí)指向(0,0,0)點(diǎn)

〃設(shè)置模型位置旋轉(zhuǎn)及縮放信息

gl.glTranslatef(O.Of,0.Of,-1.Of);〃將模型位置設(shè)置為(0,

0,-1)

floatangle=30.Of;

gl.glRotatef(angle,0,1,0);〃繞模型自身Y軸旋轉(zhuǎn)30度

gl.glRotatef(angle,1,0,0);〃繞模型自身X軸旋轉(zhuǎn)30度

gl.glScalef(1.2f,1.2f,1.2f);〃設(shè)置三方向的縮放系數(shù)

〃設(shè)置顏色

gl.glColor4f(0.Of,0.Of,0.Of,1.Of);

〃渲染立方體

mCube.draw(gl,gl.GLTRIANGLES);

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

}

實(shí)驗(yàn)七:網(wǎng)絡(luò)訪(fǎng)問(wèn)與服務(wù)

一、實(shí)驗(yàn)?zāi)康?/p>

掌握Android網(wǎng)絡(luò)訪(fǎng)問(wèn)方法

二、實(shí)驗(yàn)要求

1、了解手機(jī)WEB網(wǎng)站訪(fǎng)問(wèn)編程

2、通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)訪(fǎng)問(wèn)

3、了解數(shù)據(jù)庫(kù)使用

三、實(shí)驗(yàn)原理

利用Android網(wǎng)絡(luò)訪(fǎng)問(wèn)協(xié)議

四、實(shí)驗(yàn)過(guò)程

1、訪(fǎng)問(wèn)WEB網(wǎng)站,通過(guò)HttpResponse類(lèi),讀入網(wǎng)絡(luò)數(shù)據(jù)。

AndroidSDK網(wǎng)絡(luò)包:

包描述

android,netAndroid網(wǎng)絡(luò)訪(fǎng)問(wèn)socketo該包包括URI類(lèi),不僅

僅是傳統(tǒng)的聯(lián)網(wǎng)方面。

處理Android有關(guān)Http協(xié)議類(lèi)。

在A(yíng)ndroid平臺(tái)上管理有關(guān)WiFi(802.11無(wú)線(xiàn)

Ethernet)應(yīng)用的類(lèi)。

包含用于管理和發(fā)送SMS(文本)消息的類(lèi)。

讀入WEB數(shù)據(jù)例程:

HttpClientclient=newDefaultHttpClient();

HttpGetget=newHttpGet(url);

IlttpResponseresponse=client.execute(get);

HttpEntityentity=response.getEntityO;

〃嘗試讀取entity的長(zhǎng)度,返回-1表示長(zhǎng)度未知

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;

〃如果長(zhǎng)度已知,可以通過(guò)taskProgrossO通知監(jiān)聽(tīng)者任

務(wù)執(zhí)行的比例

if(length>0){

listener.taskProgress(this,count,length);

)

〃為了更好的演示進(jìn)度,讓線(xiàn)程休眠100ms

Thread,s/ee,(100);

)

Log.e(〃HttpTask〃,“l(fā)ength=〃+

baos.toByteArray().1ength);

〃返回內(nèi)容

s=newString(baos.toByteArray());

)

returns;

實(shí)驗(yàn)八硬件訪(fǎng)問(wèn)與傳感器

一、實(shí)驗(yàn)?zāi)康?/p>

通過(guò)底層API訪(fǎng)問(wèn)手機(jī)硬件及手機(jī)上的各種傳感器

二、實(shí)驗(yàn)要求

1、獲取手機(jī)上電話(huà)、短信等各種功能的編程

2、了解手機(jī)上各種傳感器的功能與使用方法

三、實(shí)驗(yàn)原理

利用手機(jī)本身的功能與相關(guān)傳感器的使用

四、實(shí)驗(yàn)過(guò)程

1、了解程序使用手機(jī)電話(huà)功能的方法

短信收發(fā):

?發(fā)送短信只需要幾行代碼,如下:

SmsManagersms=SmsManager.getDefault();

PendingTntentpi=Pendingintent.getBroadcast(this,0,new

Intent(),0);

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

其中參數(shù)phoneNumber和MsgStr均是String類(lèi)型,表示接收方的電話(huà)號(hào)

碼和短信內(nèi)容

?接收短信主要是繼承BroadcascRcccivcr類(lèi),覆蓋onReceive函數(shù):

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;

〃短消息發(fā)送成功

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〃);〃模擬器之間互發(fā)短信

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

txt.setText]〃我用自己的程序試試發(fā)短信。〃);

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,

〃請(qǐng)重新輸入電話(huà)號(hào)碼和短信內(nèi)容〃,

Toast.LENGTH_LON(J).show();

}

}

));

)

privatevoidsendSMS(Stringaddress,Stringcontent)

{

SmsManagermanager=SmsManager.gelDefaultQ;

Intenti=newIntent(^SMS_ACT10^;

〃生成Pendingintent,當(dāng)消息發(fā)送完成,接收到廣播

Pendingintentsentlntent二Pendingintent.getBroadcast^

this,

0,

i,

Pendingintent.FLAG_ONE_SHOT);

manager.sendTextMessage(

address,

null,

content,

sentlntent,

null);

如果要收發(fā)短信,還需在A(yíng)ndroidManifest.xml中聲明權(quán)限:

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

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

2、手機(jī)上有多種傳感器,可以對(duì)這些傳感器進(jìn)行編程。

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

特性描述

相機(jī)交互的類(lèi),可以截取照片、獲取預(yù)覽屏幕的

圖像,修改理相機(jī)操作的參數(shù)。

允許訪(fǎng)問(wèn)Android平臺(tái)傳感器的類(lèi)。并非所有

配備Android的設(shè)備都支持SensorManager

中的所有傳感器。

在傳感器值實(shí)時(shí)更改時(shí),希望接收更新的類(lèi)要實(shí)

現(xiàn)的接口。用以監(jiān)視硬件中一個(gè)或多個(gè)可用傳感

器。

用于錄制媒體的類(lèi)。

android.FaceDetector人臉進(jìn)行基本識(shí)別類(lèi)。

android,os.*可以與操作環(huán)境交互的包,包括電源管理、文件

查看器、處理器和消息類(lèi)。

包含幾個(gè)常量,這表示Android傳感器系統(tǒng)的不同方面,包括:

傳感器類(lèi)型:方向、加速表、光線(xiàn)、磁場(chǎng)、臨近性、溫度等。采樣率

最快、游戲、普通、用戶(hù)界面。

當(dāng)應(yīng)用程序請(qǐng)求特定的采樣率時(shí),其實(shí)只是對(duì)傳感器子系統(tǒng)的一個(gè)提

示,或者一個(gè)建議。不保證特定的采樣率可用。準(zhǔn)確性高、低、中、不可

靠。

ScnsorListcncr接口是傳感器應(yīng)用程序的中心。它包括兩個(gè)必需方

法:

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

時(shí)調(diào)用。該方法只對(duì)受此應(yīng)用程序監(jiān)視的傳感器調(diào)用。該方法的參數(shù)包括:

一個(gè)整數(shù),指示更改的傳感器;

一個(gè)浮點(diǎn)值數(shù)組,表示傳感器數(shù)據(jù)本身。有些傳感器只提供一個(gè)數(shù)

據(jù)值,另一些則提供三個(gè)浮點(diǎn)值。方向和加速表傳感器都提供三個(gè)

數(shù)據(jù)值。

當(dāng)傳感器的準(zhǔn)確性更改時(shí),將調(diào)用onAccuracyChangcd[int

sensor,intaccuracy)方法。參數(shù)包括兩個(gè)整數(shù):一個(gè)表示傳感器,另

一個(gè)表示該傳感器新的準(zhǔn)確值。

要與傳感器交互,應(yīng)用程序必須注冊(cè)以偵聽(tīng)與一個(gè)或多個(gè)傳感器相關(guān)

的活動(dòng)。注冊(cè)使用SensorManager類(lèi)的registerListener方法完成。

并非所有支持Android的設(shè)備都支持SDK中定義的所有傳感器。

以Android為中心的傳感器系統(tǒng)

相機(jī)拍攝:

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格式的數(shù)據(jù)

privatePictureCallbackjpegCallback=newPictureCallback()(

publicvoidonPictureTaken(byte[]data,Cameracamera){

Parametersps=camera.getParameters();

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

〃存儲(chǔ)拍照獲得的圖片

Stringpath=save(data);

〃將圖片交給Image程序處理

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

Intentintent=newIntent();

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

startActivity(intent);

)

);

〃快門(mén)按下的時(shí)候onShutter()被回調(diào)

privateShutterCallbackshutterCallback=new

ShutterCallbackO{

publicvoidonShutter(){

if(tone==null)

〃發(fā)出提示用戶(hù)的聲音

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())

〃創(chuàng)建文件

file.createNewFileO;

FileOutputStreamfos=newFileOutputStream(file);

fos.write(data);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論