現在,不少基於網絡或有網絡支持的設備都運行某種 Linux內核。這是一種可靠的平臺:可經濟有效地進行部署和提供支持,而且可直接做爲面向部署的良好的設計方法。這些設備的 UI 一般是基於 HTML的,可經過 PC 或 Mac瀏覽器查看。但並非每一個設備都須要經過一個常規的計算設備來控制。想象一下傳統的家用電器,例如電爐、微波爐或麪包機。若是您的家用電器由 Android 控制,而且有一個彩色觸摸屏,會怎麼樣?若是電爐上有一個 Android UI,那麼操控者甚至能夠烹飪點什麼東西。
在本文中,瞭解 Android 平臺,以及如何將它用於移動和非移動應用程序。安裝 Android SDK,並構建一個簡單的應用程序。下載 本文中的示例應用程序的源代碼。
Android 簡史
Android 平臺是 Open Handset Alliance的成果,Open Handset Alliance 組織由一羣共同致力於構建更好的移動電話的公司組成。這個組織由 Google領導,包括移動運營商、手持設備製造商、零部件製造商、軟件解決方案和平臺提供商以及市場營銷公司。從軟件開發的觀點看,Android正處 在開源領域的中心位置。
市場上第一款支持 Android 的手機是由 HTC 製造並由 T-Mobile 供應的G1。這款設備從設想到推出花了大約一年的時間,唯一可用的軟件開發工具是一些實行增量改進的 SDK 發行版。隨着 G1發行日的臨近,Android 團隊發佈了 SDK V1.0,用於這個新平臺的應用程序也浮出水面。
爲了鼓勵創新,Google 舉辦了兩屆 「Android Developer Challenges」,爲優勝的參賽做品提供數百萬美金的獎勵。G1問世幾個月以後,隨後就發佈了 Android Market,它使用戶能夠瀏覽應用程序,而且能夠將應用程序直接下載到他們的手機上。通過大約 18個月,一個新的移動平臺進入公衆領域。
Android 平臺
Android 有豐富的功能,所以很容易與桌面操做系統混淆。Android 是一個分層的環境,構建在 Linux 內核的基礎上,它包括豐富的功能。UI 子系統包括:
黑莓和 iPhone都提供了受歡迎的、高容量的移動平臺,可是卻分別針對兩個不一樣的消費羣體。黑莓是企業業務用戶的不二選擇。可是,做爲一種消費設備,它在易用 性和「新奇特性」 方面難以和 iPhone 抗衡。Android則是一個年輕的、有待開發的平臺,它有潛力同時涵蓋移動電話的兩個不一樣消費羣體,甚至可能縮小工做和娛樂之間的差異
現在,不少基於網絡或有網絡支持的設備都運行某種 Linux內核。這是一種可靠的平臺:可經濟有效地進行部署和提供支持,而且可直接做爲面向部署的良好的設計方法。這些設備的 UI 一般是基於 HTML的,可經過 PC 或 Mac瀏覽器查看。但並非每一個設備都須要經過一個常規的計算設備來控制。想象一下傳統的家用電器,例如電爐、微波爐或麪包機。若是您的家用電器由 Android 控制,而且有一個彩色觸摸屏,會怎麼樣?若是電爐上有一個 Android UI,那麼操控者甚至能夠烹飪點什麼東西。
在本文中,瞭解 Android 平臺,以及如何將它用於移動和非移動應用程序。安裝 Android SDK,並構建一個簡單的應用程序。下載 本文中的示例應用程序的源代碼。
Android 簡史
Android 平臺是 Open Handset Alliance的 成果,Open Handset Alliance 組織由一羣共同致力於構建更好的移動電話的公司組成。這個組織由 Google領導,包括移動運營商、手持設備製造商、零部件製造商、軟件解決方案和平臺提供商以及市場營銷公司。從軟件開發的觀點看,Android正處 在開源領域的中心位置。
市場上第一款支持 Android 的手機是由 HTC 製造並由 T-Mobile 供應的G1。這款設備從設想到推出花了大約一年的時間,唯一可用的軟件開發工具是一些實行增量改進的 SDK 發行版。隨着 G1發行日的臨近,Android 團隊發佈了 SDK V1.0,用於這個新平臺的應用程序也浮出水面。
爲了鼓勵創新,Google 舉辦了兩屆 「Android Developer Challenges」,爲優勝的參賽做品提供數百萬美金的獎勵。G1問世幾個月以後,隨後就發佈了 Android Market,它使用戶能夠瀏覽應用程序,而且能夠將應用程序直接下載到他們的手機上。通過大約 18個月,一個新的移動平臺進入公衆領域。
Android 平臺
Android 有豐富的功能,所以很容易與桌面操做系統混淆。Android 是一個分層的環境,構建在 Linux 內核的基礎上,它包括豐富的功能。UI 子系統包括:
html
Android 包括一個構建在 WebKit 基礎上的可嵌入瀏覽器,iPhone 的 Mobile Safari 瀏覽器一樣也是以 WebKit 爲基礎。
Android提供多種鏈接選項,包括 WiFi、藍牙和經過蜂窩(cellular)鏈接的無線數據傳輸(例如 GPRS、EDGE 和 3G)。Android應用程序中一項流行的技術是連接到 Google 地圖,以便在應用程序中顯示地址。Android 軟件棧還提供對基於位置的服務(例如GPS)和加速計的支持,不過並非全部的 Android 設備都配備了必需的硬件。另外還有攝像支持。
過去,移動應用程序努力向桌面應用程序看齊的兩個領域分別是圖形/媒體和數據存儲方法。Android 經過提供對 2D 和 3D 圖形的內置支持,包括 OpenGL庫,解決了圖形方面的挑戰。因爲 Android 平臺包括流行的開源 SQLite 數據庫,所以緩解了數據存儲的負擔。圖 1 顯示一個簡化的Android 軟件層次結構。
圖 1. Android 軟件層次結構
應用程序架構
如前所述,Android 運行在 Linux 內核上。Android 應用程序是用 Java編程語言編寫的,它們在一個虛擬機(VM)中運行。須要注意的是,這個 VM 並不是您想象中的 JVM,而是 Dalvik VirtualMachine,這是一種開源技術。每一個 Android 應用程序都在 Dalvik VM 的一個實例中運行,這個實例駐留在一個由 Linux內核管理的進程中,以下圖示。
圖 2. Dalvik VM
Android 應用程序由一個或多個組件組成:
活動
具備可視 UI 的應用程序是用活動實現的。當用戶從主屏幕或應用程序啓動器選擇一個應用程序時,就會開始一個動做。服務 服務應該用於任何須要持續較長時間的應用程序,例如網絡**器或更新檢查應用程序。
內容提供程序
能夠將內容提供程序看做數據庫服務器。內容提供程序的任務是管理對持久數據的訪問,例如 SQLite數據庫。若是應用程序很是簡單,那麼可能不須要建立內容提供程序。若是要構建一個較大的應用程序,或者構建須要爲多個活動或應用程序提供數據 的應用程序,那麼可使用內容提供程序實現數據訪問。
廣播**器
Android 應用程序可用於處理一個數據元素,或者對一個事件(例如**文本消息)作出響應。
Android應用程序是連同一個 AndroidManifest.xml 文件一塊兒部署到設備的。AndroidManifest.xml包含必要的配置信息,以便將它適當地安裝到設備。它包括必需的類名和應用程序可以處理的事 件類型,以及運行應用程序所需的許可。例如,若是應用程序須要訪問網絡 — 例如爲了下載一個文件 — 那麼 manifest文件中必須顯式地列出該許可。不少應用程序可能啓用了這個特定的許可。這種聲明式安全性有助於減小惡意應用程序損害設備的可能性。
下一節討論構建 Android 應用程序所需的開發環境。
所需的工具
開始開發 Android 應用程序的最簡捷的方式是下載 Android SDK 和 Eclipse IDE(參見 參考資料)。Android 開發能夠在 Microsoft® Windows®、Mac OS X 或 Linux 上進行。
本文假設您使用的是 Eclipse IDE 和用於 Eclipse 的 Android Developer Tools 插件。Android應用程序是用 Java 語言編寫的,可是是在 Dalvik VM(非 Java 虛擬機)中編譯和執行的。在 Eclipse 中用 Java語言編程很是簡單;Eclipse 提供一個豐富的 Java 環境,包括上下文敏感幫助和代碼提示。Java 代碼經過編譯後,AndroidDeveloper Tools 可確保適當地將它打包,包括 AndroidManifest.xml 文件。
雖然沒有 Eclipse 和 Android Developer Tools 插件也能夠開發 Android 應用程序,可是那樣就須要熟悉 Android SDK。
Android SDK 是做爲一個 ZIP 文件發佈的,能夠將該文件解壓到硬盤上的一個目錄中。因爲有多個 SDK 更新,建議有意識地組織開發環境,以便在不一樣的 SDK 安裝之間輕鬆地切換。SDK 包括:
android.jar
Java 歸檔文件,其中包含構建應用程序所需的全部的 Android SDK 類。
documention.html 和 docs 目錄
本地和網上提供的 SDK 文檔。這些文檔的主要形式爲 JavaDocs,以便於在 SDK 中導航大量的包。文檔還包括一個高級開發指南和 Android 社區的連接。
Samples 目錄
samples 子目錄包含各類應用程序的源代碼,包括 ApiDemo,該應用程序演示了不少 API。這個示例應用程序能夠做爲 Android 應用程序開發的良好起點。
Tools 目錄
包含全部用於構建 Android 應用程序的命令行工具。最經常使用、最有用的工具是 adb 實用程序(Android Debug Bridge)。
usb_driver
該目錄包含將開發環境鏈接到支持 Android 的設備(例如 G1 或 Android Dev 1 解鎖開發手機)所需的驅動程序。只有 Windows 平臺的開發人員才須要這些文件。
Android 應用程序能夠在實際的設備上運行,也能夠在 Android SDK 附帶的 Android Emulator 上運行。
圖 3 顯示 Android Emulator 的主屏幕。
圖 3. Android Emulator
Android Debug Bridge
adb 實用程序支持一些可選命令行參數,以提供強大的特性,例如複製文件到設備或從設備複製文件。可使用 shell命令行參數鏈接到手機自己,併發送基本的 shell 命令。
圖 4 顯示在經過 USB 線鏈接到 Windows 筆記本電腦的一個實際設備上運行的 adb shell 命令。
圖 4. 使用 adb shell 命令
在這個 shell 環境中,能夠:
java
從相同的命令提示符環境中,還能夠與 SQLite 數據庫交互,啓動程序以及執行許多其餘系統級任務。想像一下您正在鏈接到電話,所以這是很是了不得的功能。
在下一節,您將建立一個簡單的Android 應用程序。
編寫一個基本的應用程序
本節展現如何構建一個 Android 應用程序。示例應用程序很是簡單:一個修改後的 「Hello Android」 應用程序。您將進行一個微小的修改,使屏幕背景所有變爲白色,以便把手機用做手電筒。這個例子不是頗有創意,可是能夠做爲一個有用的例子。請 下載 完整的源代碼。
爲了在 Eclipse 中建立應用程序,選擇 File > New >Android project,這將啓動 New Android Project 嚮導。
圖 5. New Android project 嚮導
接下來,建立一個簡單的應用程序,該應用程序有一個活動,而且在 main.xml 中有一個 UI 佈局。佈局包含一個文本元素,您將修改這個文本元素,以顯示 Android FlashLight。
下面的清單顯示了這個簡單的佈局。
清單 1. Flashlight 佈局android
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/all_white"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textColor="@color/all_black" android:gravity="center_horizontal"/> </LinearLayout> |
在 strings.xml 中建立兩個顏色資源。
清單 2. strings.xml 中的顏色web
<?xml version="1.0" encoding="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> </resources> |
主屏幕布局有一個定義爲 all_white 的背景色。在 strings.xml 文件中,能夠看到 all_white 被定義爲一個值爲 #FFFFFF 的 RGB 三元組,即純白。
佈局包含一個 TextView,這其實是一塊靜態文本。它是不可編輯的。文本被設爲黑色,並經過 gravity 屬性設爲水平居中。
該應用程序有一個名爲 FlashLight.java 的 Java 源文件,如如下清單所示。
清單 3. Flashlight.javashell
package com.msi.flashlight; import android.app.Activity; import 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 嚮導的模板代碼:數據庫
運行該應用程序能夠看到一個白色屏幕,其中有黑色文本。
圖 6. flashlight 的白色屏幕
下面顯示用於 FlashLight 應用程序的 AndroidManifest.xml 文件。
清單 4. 用於 FlashLight 的 AndroidManifest.xml編程
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.msi.flashlight" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".FlashLight" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
該文件是由用於 Eclipse 的 Android Developer Tools 插件自動建立的。您不須要作任何事情。 可是這個應用程序並非很強大,可是在必要是對你有必定的幫助。 瀏覽器
更多精彩分享盡在E-網絡營銷專家iphone開發、android開發、手機網站製做爲您提供,本站提供手機網站製做、iphone開發、android開發等服務,若有須要請您聯繫客服,謝謝!安全
本文由 android開發 www.anywebapps.com 整理服務器