程序開發(fā)學(xué)習(xí)筆記手電筒軟件設(shè)計_第1頁
程序開發(fā)學(xué)習(xí)筆記手電筒軟件設(shè)計_第2頁
程序開發(fā)學(xué)習(xí)筆記手電筒軟件設(shè)計_第3頁
程序開發(fā)學(xué)習(xí)筆記手電筒軟件設(shè)計_第4頁
程序開發(fā)學(xué)習(xí)筆記手電筒軟件設(shè)計_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Android 開發(fā)簡介簡介黑莓和 iPhone 都提供了受歡迎的、高容量的移動平臺,但是卻分別針對兩個不同的消費群體。黑莓是企業(yè)業(yè)務(wù)用戶的不二選擇。但是,作為一種消費設(shè)備,它在易用性和 “新奇特性” 方面難以和 iPhone 抗衡。Android 則是一個年輕的、有待開發(fā)的平臺,它有潛力同時涵蓋移動電話的兩個不同消費群體,甚至可能縮小工作和娛樂之間的差別如今,很多基于網(wǎng)絡(luò)或有網(wǎng)絡(luò)支持的設(shè)備都運行某種 Linux 內(nèi)核。這是一種可靠的平臺:可經(jīng)濟有效地進行部署和提供支持,并且可直接作為面向部署的良好的設(shè)計方法。這些設(shè)備的 UI 通常是基于 HTML 的,可通過 PC 或 Mac 瀏覽器查看。但

2、并不是每個設(shè)備都需要通過一個常規(guī)的計算設(shè)備來控制。想象一下傳統(tǒng)的家用電器,例如電爐、微波爐或面包機。如果您的家用電器由 Android 控制,并且有一個彩色觸摸屏,會怎么樣?如果電爐上有一個 Android UI,那么操控者甚至可以烹飪點什么東西。在本文中,了解 Android 平臺,以及如何將它用于移動和非移動應(yīng)用程序。安裝 Android SDK,并構(gòu)建一個簡單的應(yīng)用程序。Android 簡史Android 平臺是 Open Handset Alliance 的成果,Open Handset Alliance 組織由一群共同致力于構(gòu)建更好的移動電話的公司組成。這個組織由 Google 領(lǐng)導(dǎo)

3、,包括移動運營商、手持設(shè)備制造商、零部件制造商、軟件解決方案和平臺提供商以及市場營銷公司。從軟件開發(fā)的觀點看,Android 正處在開源領(lǐng)域的中心位置。市場上第一款支持 Android 的手機是由 HTC 制造并由 T-Mobile 供應(yīng)的 G1。這款設(shè)備從設(shè)想到推出花了大約一年的時間,惟一可用的軟件開發(fā)工具是一些實行增量改進的 SDK 發(fā)行版。隨著 G1 發(fā)行日的臨近,Android 團隊發(fā)布了 SDK V1.0,用于這個新平臺的應(yīng)用程序也浮出水面。為了鼓勵創(chuàng)新,Google 舉辦了兩屆 “Android Developer Challenges”,為優(yōu)勝的參賽作品提供數(shù)百萬美金的獎勵。G1

4、 問世幾個月之后,隨后就發(fā)布了 Android Market,它使用戶可以瀏覽應(yīng)用程序,并且可以將應(yīng)用程序直接下載到他們的手機上。經(jīng)過大約 18 個月,一個新的移動平臺進入公眾領(lǐng)域。Android 平臺Android 有豐富的功能,因此很容易與桌面操作系統(tǒng)混淆。Android 是一個分層的環(huán)境,構(gòu)建在 Linux 內(nèi)核的基礎(chǔ)上,它包括豐富的功能。UI 子系統(tǒng)包括:窗口視圖用于顯示一些常見組件(例如編輯框、列表和下拉列表)的小部件Android 包括一個構(gòu)建在 WebKit 基礎(chǔ)上的可嵌入瀏覽器,iPhone 的 Mobile Safari 瀏覽器同樣也是以 WebKit 為基礎(chǔ)。Android

5、 提供多種連接選項,包括 WiFi、藍(lán)牙和通過蜂窩(cellular)連接的無線數(shù)據(jù)傳輸(例如 GPRS、EDGE 和 3G)。Android 應(yīng)用程序中一項流行的技術(shù)是鏈接到 Google 地圖,以便在應(yīng)用程序中顯示地址。Android 軟件棧還提供對基于位置的服務(wù)(例如 GPS)和加速計的支持,不過并不是所有的 Android 設(shè)備都配備了必需的硬件。另外還有攝像支持。過去,移動應(yīng)用程序努力向桌面應(yīng)用程序看齊的兩個領(lǐng)域分別是圖形/媒體和數(shù)據(jù)存儲方法。Android 通過提供對 2D 和 3D 圖形的內(nèi)置支持,包括 OpenGL 庫,解決了圖形方面的挑戰(zhàn)。由于 Android 平臺包括流行的

6、開源 SQLite 數(shù)據(jù)庫,因此緩解了數(shù)據(jù)存儲的負(fù)擔(dān)。圖 1 顯示一個簡化的 Android 軟件層次結(jié)構(gòu)。圖 1. Android 軟件層次結(jié)構(gòu)應(yīng)用程序架構(gòu)如前所述,Android 運行在 Linux 內(nèi)核上。Android 應(yīng)用程序是用 Java 編程語言編寫的,它們在一個虛擬機(VM)中運行。需要注意的是,這個 VM 并非您想象中的 JVM,而是 Dalvik Virtual Machine,這是一種開源技術(shù)。每個 Android 應(yīng)用程序都在 Dalvik VM 的一個實例中運行,這個實例駐留在一個由 Linux 內(nèi)核管理的進程中,如下圖所示。圖 2. Dalvik VMAndroid

7、 應(yīng)用程序由一個或多個組件組成:活動具有可視 UI 的應(yīng)用程序是用活動實現(xiàn)的。當(dāng)用戶從主屏幕或應(yīng)用程序啟動器選擇一個應(yīng)用程序時,就會開始一個動作。服務(wù)服務(wù)應(yīng)該用于任何需要持續(xù)較長時間的應(yīng)用程序,例如網(wǎng)絡(luò)監(jiān)視器或更新檢查應(yīng)用程序。內(nèi)容提供程序可以將內(nèi)容提供程序看作數(shù)據(jù)庫服務(wù)器。內(nèi)容提供程序的任務(wù)是管理對持久數(shù)據(jù)的訪問,例如 SQLite 數(shù)據(jù)庫。如果應(yīng)用程序非常簡單,那么可能不需要創(chuàng)建內(nèi)容提供程序。如果要構(gòu)建一個較大的應(yīng)用程序,或者構(gòu)建需要為多個活動或應(yīng)用程序提供數(shù)據(jù)的應(yīng)用程序,那么可以使用內(nèi)容提供程序?qū)崿F(xiàn)數(shù)據(jù)訪問。廣播接收器Android 應(yīng)用程序可用于處理一個數(shù)據(jù)元素,或者對一個事件(例如接

8、收文本消息)做出響應(yīng)。Android 應(yīng)用程序是連同一個 AndroidManifest.xml 文件一起部署到設(shè)備的。AndroidManifest.xml 包含必要的配置信息,以便將它適當(dāng)?shù)匕惭b到設(shè)備。它包括必需的類名和應(yīng)用程序能夠處理的事件類型,以及運行應(yīng)用程序所需的許可。例如,如果應(yīng)用程序需要訪問網(wǎng)絡(luò) 例如為了下載一個文件 那么 manifest 文件中必須顯式地列出該許可。很多應(yīng)用程序可能啟用了這個特定的許可。這種聲明式安全性有助于減少惡意應(yīng)用程序損害設(shè)備的可能性。下一節(jié)討論構(gòu)建 Android 應(yīng)用程序所需的開發(fā)環(huán)境。所需的工具開始開發(fā) Android 應(yīng)用程序的最簡捷的方式是下載

9、 Android SDK 和 Eclipse IDE(參見 參考資料)。Android 開發(fā)可以在 Microsoft® Windows®、Mac OS X 或 Linux 上進行。本文假設(shè)您使用的是 Eclipse IDE 和用于 Eclipse 的 Android Developer Tools 插件。Android 應(yīng)用程序是用 Java 語言編寫的,但是是在 Dalvik VM(非 Java 虛擬機)中編譯和執(zhí)行的。在 Eclipse 中用 Java 語言編程非常簡單;Eclipse 提供一個豐富的 Java 環(huán)境,包括上下文敏感幫助和代碼提示。Java 代碼通過編

10、譯后,Android Developer Tools 可確保適當(dāng)?shù)貙⑺虬?,包?AndroidManifest.xml 文件。雖然沒有 Eclipse 和 Android Developer Tools 插件也可以開發(fā) Android 應(yīng)用程序,但是那樣就需要熟悉 Android SDK。Android SDK 是作為一個 ZIP 文件發(fā)布的,可以將該文件解壓到硬盤上的一個目錄中。由于有多個 SDK 更新,建議有意識地組織開發(fā)環(huán)境,以便在不同的 SDK 安裝之間輕松地切換。SDK 包括:android.jarJava 歸檔文件,其中包含構(gòu)建應(yīng)用程序所需的所有的 Android SDK 類。d

11、ocumention.html 和 docs 目錄本地和網(wǎng)上提供的 SDK 文檔。這些文檔的主要形式為 JavaDocs,以便于在 SDK 中導(dǎo)航大量的包。文檔還包括一個高級開發(fā)指南和 Android 社區(qū)的鏈接。Samples 目錄samples 子目錄包含各種應(yīng)用程序的源代碼,包括 ApiDemo,該應(yīng)用程序演示了很多 API。這個示例應(yīng)用程序可以作為 Android 應(yīng)用程序開發(fā)的良好起點。Tools 目錄包含所有用于構(gòu)建 Android 應(yīng)用程序的命令行工具。最常用、最有用的工具是 adb 實用程序(Android Debug Bridge)。usb_driver該目錄包含將開發(fā)環(huán)境連

12、接到支持 Android 的設(shè)備(例如 G1 或 Android Dev 1 解鎖開發(fā)手機)所需的驅(qū)動程序。只有 Windows 平臺的開發(fā)人員才需要這些文件。Android 應(yīng)用程序可以在實際的設(shè)備上運行,也可以在 Android SDK 附帶的 Android Emulator 上運行。圖 3 顯示 Android Emulator 的主屏幕。圖 3. Android EmulatorAndroidDebugBridgeadb 實用程序支持一些可選命令行參數(shù),以提供強大的特性,例如復(fù)制文件到設(shè)備或從設(shè)備復(fù)制文件??梢允褂?shell 命令行參數(shù)連接到手機本身,并發(fā)送基本的 shell 命令

13、。圖 4 顯示在通過 USB 線連接到 Windows 筆記本電腦的一個實際設(shè)備上運行的 adb shell 命令。圖 4. 使用 adb shell 命令在這個 shell 環(huán)境中,可以:· 顯示網(wǎng)絡(luò)配置,網(wǎng)絡(luò)配置可顯示多個網(wǎng)絡(luò)連接。注意這多個網(wǎng)絡(luò)連接:o lo 是本地或 loopback 連接。o tiwlan0 是 WiFi 連接,該連接由本地 DHCP 服務(wù)器提供一個地址。· 顯示 PATH 環(huán)境變量的內(nèi)容。· 執(zhí)行 su 命令,以成為超級用戶。· 將目錄改為 /data/app,其中存放用戶應(yīng)用程序。· 列出包含某個應(yīng)用程序的目錄。A

14、ndroid 應(yīng)用程序文件實際上是歸檔文件,可通過 WinZip 之類的軟件查看。擴展名為 apk。· 發(fā)出 ping 命令,查看 G 是否可用。從相同的命令提示符環(huán)境中,還可以與 SQLite 數(shù)據(jù)庫交互,啟動程序以及執(zhí)行許多其他系統(tǒng)級任務(wù)。想像一下您正在連接到電話,因此這是非常了不起的功能。在下一節(jié),您將創(chuàng)建一個簡單的 Android 應(yīng)用程序。編寫一個基本的應(yīng)用程序本節(jié)展示如何構(gòu)建一個 Android 應(yīng)用程序。示例應(yīng)用程序非常簡單:一個修改后的 “Hello Android” 應(yīng)用程序。您將進行一個微小的修改,使屏幕背景全部變?yōu)榘咨?,以便把手機用作手電筒。這個例子不是很有創(chuàng)意

15、,但是可以作為一個有用的例子。請 下載 完整的源代碼。為了在 Eclipse 中創(chuàng)建應(yīng)用程序,選擇 File > New > Android project,這將啟動 New Android Project 向?qū)?。圖 5. New Android project 向?qū)Ы酉聛?,?chuàng)建一個簡單的應(yīng)用程序,該應(yīng)用程序有一個活動,并且在 main.xml 中有一個 UI 布局。布局包含一個文本元素,您將修改這個文本元素,以顯示 Android FlashLight。下面的清單顯示了這個簡單的布局。清單 1. Flashlight 布局<?xml version="1.0&qu

16、ot; encoding="utf-8"?><LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="color/all_white"><TextView android:layout_width="fill_

17、parent" android:layout_height="wrap_content" android:text="string/hello" android:textColor="color/all_black" android:gravity="center_horizontal"/></LinearLayout>在 strings.xml 中創(chuàng)建兩個顏色資源。清單 2. strings.xml 中的顏色<?xml version="1.0" encodi

18、ng="utf-8"?><resources> <string name="hello">Android FlashLight</string> <string name="app_name">FlashLight</string> <color name="all_white">#FFFFFF</color> <color name="all_black">#000000</color&

19、gt;</resources>主屏幕布局有一個定義為 all_white 的背景色。在 strings.xml 文件中,可以看到 all_white 被定義為一個值為 #FFFFFF 的 RGB 三元組,即純白。布局包含一個 TextView,這實際上是一塊靜態(tài)文本。它是不可編輯的。文本被設(shè)為黑色,并通過 gravity 屬性設(shè)為水平居中。該應(yīng)用程序有一個名為 FlashLight.java 的 Java 源文件,如以下清單所示。清單 3. Flashlight.javapackage com.msi.flashlight;import android.app.Activity;i

20、mport android.os.Bundle;public class FlashLight extends Activity /* Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); 該代碼是直接來自 New Project 向?qū)У哪0宕a:· 它是 Java 包 com.msi.flashlight 的一部分。&

21、#183; 它有兩個 import:o 一個用于 activity 類o 一個用于 bundle 類· 當(dāng)該活動發(fā)起后,onCreate 方法被調(diào)用,傳入一個 savedInstanceState。對于我們來說,不必關(guān)心這個 bundle。只有在暫停然后恢復(fù)活動時才會用到。· onCreate 方法覆蓋了同名的 activity 類方法。它調(diào)用超類的 onCreate 方法。· 對 setContentView() 的調(diào)用將關(guān)聯(lián) main.xml 文件中定義的 UI 布局。main.xml 和 strings.xml 中的任何內(nèi)容都自動映射到 R.java 源文件中定義的常量。任何時候都不要直接編輯這個文件,因為它隨著每次構(gòu)建而改變。運行該應(yīng)用程序可以看到一個白色屏幕,其中有黑色文本。圖 6. flashlight 的白色屏幕下面顯示用于 FlashLight 應(yīng)用程序的 AndroidManifest.xml 文件。清單 4. 用于 FlashLight 的 AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifes

溫馨提示

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

評論

0/150

提交評論