版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、智能終端軟件開發(fā)2010.06.3、應(yīng)用程序智能終端開發(fā)Hello world!第一個運行程序HelloAndroidEclipse自動生成new android projectHelloAndroidHelloAndroid.javaJava程序package com.android.helloAndroid;import android.app.Activity;import android.os.Bundle;public class HelloAndroid extends Activity /* Called when the activity is first created. *
2、/ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); R.javaJava程序/* AUTO-GENERATED FILE. DO NOT MODIFY.*/package com.android.helloAndroid;public final class R public static final class attr public static final class drawable pu
3、blic static final int icon=0 x7f020000; public static final class layout public static final int main=0 x7f030000; public static final class string public static final int app_name=0 x7f040001; public static final int hello=0 x7f040000; main.xmlXml文件Resourcesstrings.xmlXml文件 Hello Android, 2010. Hel
4、loAndroid將要顯示內(nèi)容:Hello Android, 2010.RUNRUN模擬運行顯示內(nèi)容:Hello Android, 2010.命令行運行啟動模擬器emulator -avd android1.6 -skin HVGA-p連接模擬器:telnet localhost 5554撥打電話:gsm call 發(fā)送短信:sms send HelloAndroid顯示圖像增加ImageViewAndroid虛擬機DalvikDalvik和標準Java虛擬機(JVM)的差別Dalvik 更適合手機所用的嵌入式環(huán)境,占用內(nèi)存少。JVM 通用Java虛擬機。Dalvik虛擬機特點Dalvik 允
5、許在有限的內(nèi)存中同時運行多個虛擬機實例。每一個Dalvik 應(yīng)用作為一個獨立的Linux 進程執(zhí)行。獨立進程可防止在虛擬機崩潰的時候所有程序都被關(guān)閉。Dalvik 提供了一個擁有較Java少限制許可證的平臺。重要包的描述Android.app :提供高層的程序模型、提供基本的運行環(huán)境Android.content :包含各種的對設(shè)備上的數(shù)據(jù)進行訪問和發(fā)布的類Android.database :通過內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫Android.graphics :底層的圖形庫,可以將它們直接繪制到屏幕上.Android.location :定位和相關(guān)服務(wù)的類Android.media :提供一些類管
6、理多種音頻、視頻的媒體接口A :提供幫助網(wǎng)絡(luò)訪問的類,超過通常的.* 接口Android.os :提供了系統(tǒng)服務(wù)、消息傳輸、IPC 機制Android.opengl :提供OpenGL 的工具Avider :提供類訪問Android 的內(nèi)容提供者Android.telephony :提供與撥打電話相關(guān)的API 交互Android.view :提供基礎(chǔ)的用戶界面接口框架Android.util :涉及工具性的方法,例如時間日期的操作Android.webkit :默認瀏覽器操作接口Android.widget :各種UI 元素(大部分可見)在應(yīng)用程序的屏幕中使用Android
7、的相關(guān)文件類型Java文件-應(yīng)用程序源文件android 本身相當一部分都是用java 編寫而成android 的應(yīng)用使用java 來開發(fā)。Class文件-Java編譯后的目標文件Google使用Dalvik 來運行應(yīng)用程序Android的class 文件是編譯過程中的中間目標文件,需要鏈接成dex 文件才能在Dalvik 上運行。Dex文件Dex文件-Android平臺上的可執(zhí)行文件Android 虛擬機Dalvik 支持的字節(jié)碼文件格式。這種虛擬機執(zhí)行的并非Java 字節(jié)碼,而是另一種字節(jié)碼:dex 格式的字節(jié)碼。在編譯Java 代碼之后,通過Android 平臺上的工具可以將Java 字
8、節(jié)碼轉(zhuǎn)換成Dex 字節(jié)碼。Dalvik VM 針對手機程式/CPU 做過最佳化,可以同時執(zhí)行許多VM 而不會占用太多Resource。Apk文件Apk文件-Android上的安裝文件Apk 是Android 安裝包的擴展名,一個Android 安裝包包含了與該Android 應(yīng)用程序相關(guān)的所有文件。apk文件將AndroidManifest.xml文件、應(yīng)用程序代碼(.dex 文件)、資源文件和其他文件打成一個壓縮包。一個工程只能打進一個.apk文件。apk 文件的本質(zhì)是一個zip包。android的AndroidManifest.xml文件AndroidManifest.xml是每一個應(yīng)用都
9、需要的文件, 位于應(yīng)用根目錄下,它描述了程序包的全局變量, 包括暴露的應(yīng)用組件(activities, services等等)和為每個組件的實現(xiàn)類,什么樣的數(shù)據(jù)可以操作,以及在什么地方運行。 主要包括以下各個元素。 A.包名(package):指定本應(yīng)用內(nèi)java主程序包的包名。當沒有指定apk的文件名時,編譯后產(chǎn)生程序包將以此命名。本包名應(yīng)當在Android系統(tǒng)運行時唯一。 B.認證(certificate):指定本應(yīng)用程序所授予的信任級別,目前有的認證級別有platform(system)、shared、media以及應(yīng)用自定義的認證。不同的認證可以享受不同的權(quán)限。android的Andr
10、oidManifest.xml文件C.權(quán)限組(permission-group):權(quán)限組的定義是為了描述一組具有共同特性的權(quán)限。 D.權(quán)限(permission):權(quán)限用來描述是否擁有做某件事的權(quán)力。Android系統(tǒng)中權(quán)限是分級的,前分為普通級別(Normal),危險級別(dangerous),簽名級別(signature)和系統(tǒng)/簽名級別(signature or system)。系統(tǒng)中所有預定義的權(quán)限根據(jù)作用的不同,分別屬于不同的級別。對于普通和危險級別的權(quán)限,我們稱之為低級權(quán)限,應(yīng)用申請即授予。其他兩級權(quán)限,我們稱之為高級權(quán)限或系統(tǒng)權(quán)限,應(yīng)用擁有platform級別的認證才能申請。當應(yīng)
11、用試圖在沒有權(quán)限的情況下做受限操作,應(yīng)用將被系統(tǒng)殺掉以警示。E.權(quán)限樹(permission-tree)權(quán)限樹的設(shè)置是為了統(tǒng)一管理一組權(quán)限,聲明于該樹下的權(quán)限所有者歸屬該應(yīng)用。系統(tǒng)提供了API,應(yīng)用可以在運行時動態(tài)添加。 PackageManager.addPermission() F.使用權(quán)限(uses-permission):應(yīng)用需要的權(quán)限應(yīng)當在此處申請,所申請的權(quán)限應(yīng)當被系統(tǒng)或某個應(yīng)用所定義,否則視為無效申請。同時使用權(quán)限的申請需要遵循權(quán)限授予條件,非platform認證的應(yīng)用無法申請高級權(quán)限。android的AndroidManifest.xml文件G:SDK(uses-sdk):標識
12、本應(yīng)用運行的SDK版本。高兼容性的應(yīng)用可以忽略此項。 H.application:application是Android應(yīng)用內(nèi)最高級別(top level)的模塊,每個應(yīng)用內(nèi)最多只能有一個application,如果應(yīng)用沒有指定該模塊,一個默認的application將被啟用。application將在應(yīng)用啟動時最先被加載,并存活在應(yīng)用的整個運行時生命周期。因此一些初始化的工作適合在本模塊完成. Application元素有許多屬性,其中:“persistent”表示本應(yīng)用是否為常駐內(nèi)存,“enable”表示本應(yīng)用當前是否應(yīng)當被加載。 android的AndroidManifest.xml文件
13、在AndroidManifest.xml文件中,運行時模塊的定義都作為本模塊的子元素。當運行時模塊被調(diào)度時,如果應(yīng)用沒有啟動,將首先啟動應(yīng)用進行初始化,然后調(diào)度對應(yīng)模塊。 I.activity:activity是application模塊的運行時子元素,標識了一個UI。除了application,一個應(yīng)用可以聲明并實現(xiàn)零至多個其它運行時模塊,activity也同樣。activity也包含了許多定義它工作狀態(tài)的屬性,其中:“name”是必須的,它指定了該activity所在的文件名,如果該文件所屬包不同于該應(yīng)用的包名(即本描述文件的最開始處),那么名字前面需要加入所在包名。activity通過增
14、加intent-fliter來標識哪些intent可以被處理,同時intent也是調(diào)度activity的主要參數(shù)。 J.receiver:receiver也是application的運行時子元素。receiver通過增加intent-fliter來標識它需要接受哪些intent。當收到intent后,receiver將根據(jù)不同的intent進行不同的處理。當一個Intent發(fā)出后,所有注冊了該intent的receiver都將會收到,系統(tǒng)會根據(jù)receiver在系統(tǒng)中的注冊次序順序發(fā)送。當一個receiver處理完該Intent后,系統(tǒng)才會向下一個receiver發(fā)送。當一個receiver有
15、多個未接收的intent時,將按照intent發(fā)送的次序順序接收。android的AndroidManifest.xml文件例,intent-filter如下: K.service:service也是application的運行時子元素。Service屬于后臺模塊,啟動后將長時間運行,除非停止該service或所在應(yīng)用進程被殺死。 L.provider:provider也是application的運行時子元素。它繼承于ContentProvider,是對該應(yīng)用管理的用戶數(shù)據(jù)的結(jié)構(gòu)化接入,是基于數(shù)據(jù)庫操作方式的封裝。如果應(yīng)用允許外部應(yīng)用訪問管理它的用戶數(shù)據(jù),provider是Android平臺提
16、供的最佳方式。 M.activity-alias:顧名思義,是已有activity的別名。 N:uses-library:標識應(yīng)用啟動所必須的共享庫。 AndroidManifest.xml 的結(jié)構(gòu)大綱 文件根節(jié)點, 描述了程序包的所有內(nèi)容. 請求一個安全授權(quán), 必須被授予該權(quán)限, 您的程序包才能正確的操作. 0N 聲明一個安全授權(quán), 用來限制哪些應(yīng)用可以訪問您的程序包內(nèi)的組件和特有機制. 0N 描述程序包內(nèi)應(yīng)用級別組件的根節(jié)點. 該節(jié)點能夠描述應(yīng)用程序的全局(和/或)默認屬性, 例如標簽, 圖標, 主題, 需要的授權(quán), 等等.包含零個或一個這樣的節(jié)點 Activity 是應(yīng)用于用戶交互的最主
17、要機制. 當一個應(yīng)用運行的時候, 用戶看到的第一個屏幕就是activity, 并且, 用戶所使用的其他絕大多數(shù)屏幕(界面)也會是 一個IntentReceiver 可以讓應(yīng)用接收到一次數(shù)據(jù)變化和一次行為發(fā)生的通知, 甚至這個應(yīng)用沒有在運行也可以. 同activity 標簽一樣, 你可以選擇包含一個或多個元素 Service 是一個在后臺任意時刻都可以運行的組件. 同activity 標簽一樣, 你可以選擇包含一個或多個元素 ContentProvider組件是用來管理數(shù)據(jù)持久化及數(shù)據(jù)發(fā)布的, 發(fā)布的數(shù)據(jù)可以被其他的應(yīng)用訪問.Android AndroidManifest.xml 文件詳細解釋A
18、ndroidManifest.xml是每一個應(yīng)用都需要的文件. 位于應(yīng)用根目錄下, 描述了程序包的一個全局變量, 包括暴露的應(yīng)用組件(activities, services等等)和為每個組件的實現(xiàn)類, 什么樣的數(shù)據(jù)可以操作, 以及在什么地方運行. 這個文件的一個重要方面(概念)是其中的intent過濾器. 這個過濾器描述了何時何種情況下讓activity 啟動. 當一個activity(或是操作系統(tǒng))想要執(zhí)行一個動作, 例如打開一個Web頁或是打開一個聯(lián)系人選取屏幕, 會創(chuàng)建一個Intent對象. 該對象包含了很多的描述信息, 描述了你想做什么操作, 你想處理什么數(shù)據(jù), 數(shù)據(jù)的類型, 以及一
19、些其他的重要信息. Android拿這個Intent的信息與所有應(yīng)用暴露的intent過濾器比較, 找到一個最能恰當處理請求者要求的數(shù)據(jù)和action的activity. intents的更多信息在Intent頁. 另外還要聲明您的應(yīng)用的Activities, Content Providers, Services, 和 Intent Receivers, 你也可以在AndroidManifest.xml文件中指定權(quán)限和instrumentation(安全控制和測試).xmlns:android 屬性是 XML 名空間聲明語句,用來告訴 Android 工具將使用 Android 名空間中定義
20、的公共屬性。每個 Android 布局文件的最外層的標簽必須有該屬性。 在manifest中,定義多個activity時,系統(tǒng)在啟動這個application時,該如何判斷哪個activity是入口activity。經(jīng)過測試發(fā)現(xiàn),在manifest中定義的activity中,如果該activity的action是MAIN屬性,并且category 是LAUNCHER屬性,那么該activity就是入口程序。如果manifest中有多個這樣情況的activity存在,那么系統(tǒng)會將第一個查找到的復合條件的activity作為入口程序。manifest中至少應(yīng)該有一個復合該條件的activity存在
21、。 一個AndroidManifest.xml文件的例子 Adroid應(yīng)用Activity活動1最基本的Android 應(yīng)用程序組件,應(yīng)用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件組成的用戶接口,并對事件做出響應(yīng)。大多數(shù)的應(yīng)用是由多個屏幕顯示組成。例如:一個文本信息的應(yīng)用也許有一個顯示發(fā)送消息的聯(lián)系人列表屏幕,第二個屏幕用來寫文本消息和選擇收件人,再來一個屏幕查看消息歷史或者消息設(shè)置操作等。這里每一個這樣的屏幕就是一個活動,很容易實現(xiàn)從一個屏幕到一個新的屏幕并且完成新的活動。在某些情況下當前的屏幕也許需要向上一個屏幕活動提供返回值-比如讓用戶從手機中挑選一張照片返回通訊錄做為電話撥入者的頭像。Ac
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《小烏龜看爺爺》課件
- 《電氣安全操作技術(shù)》課件
- 三年級數(shù)學認識分數(shù)課件
- 《神經(jīng)系統(tǒng)的療養(yǎng)》課件
- 單位管理制度集合大合集人員管理篇十篇
- 單位管理制度匯編大合集人力資源管理十篇
- 中心對稱課件
- 單位管理制度分享大全職工管理篇
- 《證據(jù)法的基礎(chǔ)知識》課件
- 《診斷學》課程標準
- 金屬冶煉(鉛、鋅冶煉)主要負責人安全資格考試題及答案
- 2024-2030年中國船用燃料油市場供需趨勢及競爭狀況綜合分析研究報告
- 中醫(yī)適宜技術(shù)匯報
- 2023-2024全國初中物理競賽試題:物態(tài)變化(學生版)
- 《計算機組成原理》周建敏主編課后習題答案
- 市政道路及綜合管網(wǎng)工程施工組織設(shè)計
- 09J801民用建筑工程建筑施工圖設(shè)計深度圖樣
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- DL∕T 1315-2013 電力工程接地裝置用放熱焊劑技術(shù)條件
- 曼娜回憶錄完整版三篇
- 青島市平度市2022-2023學年七年級上學期期末地理試題
評論
0/150
提交評論