『壹』 android歷史版本的版本列表
Android 3.0(蜂巢 Honeycomb)軟體開發包正式發布,該版本基於基於Linux 2.6.36內核,是第一個Android平板操作系統。全球第一個使用該版本操作系統的設備是摩托羅拉公司於2011年2月24日發布的Motorola Xoom平板電腦。主要更新如下:主要更新如下: 僅供平板電腦使用 Google eBooks上提供數百萬本書 支持平板電腦大螢幕、高解析度 新版Gmail Google Talk視訊功能 3D加速處理 網頁版Market(Web store)詳細分類顯示,依個人Android分別設定安裝應用程序。 新的短消息通知功能 專為平板電腦設計的用戶界面(重新設計的通知列與系統列) 加強多任務處理的界面 重新設計適用大屏幕的鍵盤及復制粘貼功能 多個標簽的瀏覽器以及私密瀏覽模式 快速切換各種功能的相機 增強的圖庫與快速滾動的聯系人界面 更有效率的Email界面 支持多核心處理器 3.2版優化了7吋平板顯示 Android 3.1 Android 3.1軟體開發包於2011年5月10日正式發布。主要更新如下: 用戶界面的改進 連接USB配件 擴大最近的應用程序列表 可調整大小的主屏幕小部件 支持外部鍵盤和滑鼠等設備 支持操縱桿和游戲控制器 FLAC音頻播放支持 高性能的WiFi鎖,維護高性能WiFi連接設備屏幕關閉時。 支持HTTP代理為每個連接的WiFi接入點 Android 3.2 Android 3.2軟體開發包於2011年7月15日正式發布。全球第一台使用該版本操作系統的設備是中國 華為公司製造生產的MediaPad平板電腦。主要更新如下: 改進的硬體支持,包括為更廣泛的晶元,並且進行優化。 增強應用程序訪問SD卡上文件的能力,提供同步功能。 增加應用程序兼容性功能,用戶可以通過使用兼容性功能適配更多應用程序。 新的顯示支持功能,為開發人員提供更多的顯示外觀在不同的Android設備的控制。 Android 3.2.1 Android 3.2.1更新包於2011年9月20日正式發布,包含以下更新: 修復存在的Bug和安全性問題,增強系統穩定性和WiFi的性能 升級自帶的Android Market 升級自帶的Google Books 提升瀏覽器對Adobe Flash的支持 增強對簡體中文、繁體中文的手寫功能 Android 3.2.2 Android 3.2.2更新包於2011年8月30日正式發布,該版本修復了在摩托羅拉Xoom 4G上存在的Bug和性能方面的提升。
Android 4.0 Ice Cream Sandwich Android 4.0(Ice Cream Sandwich 雪糕三明治)於2011年4月在 Google I/O大會上首次被宣布,並且於2011年10月19日正式發布Android 4.0「雪糕三明治」操作系統和搭載Android 4.0的 Galaxy Nexus智能手機。 Android 4.0.1的軟體開發包於2011年10月19日正式發布。Google公司的發言人加布·科恩(Gabe Cohen)指出,Android 4.0「理論上」與任何一個當前市面上搭載了Android 2.3.x 版本的設備兼容。關於Android 4.0的 源代碼已於2011年11月14日正式公布。 該版本的主要更新內容如下: 統一了手機和平板電腦使用的系統,應用會自動根據設備選擇最佳顯示方式。 提升硬體的性能以及系統的優化,提升系統流暢度。 支持在系統中使用虛擬按鍵,該功能可以取代物理按鍵。 界面以新的標簽頁形式展示,並且將應用程序和其他內容的圖標分類。 更方便地在主界面創建文件夾,並且使用「一拖」、「一放」的操作方式。 一個定製的啟動器 改進的可視化語音郵件的能力,加快或減慢語音郵件。 在日歷中也可以使用多點觸控,進行縮放和拖拽操作。 Gmail離線搜索,兩行預覽,和新的任務欄。 與其他第三方微博、博客類應用程序的無縫連接,實時更新的內容會被展示在主界面上。 Gmail支持縮放操作,支持左拉、右拉進行查看。 增加截圖功能(可以同時按住電源鍵和音量向下鍵進行截圖操作)。 改進虛擬鍵盤可以產生的誤操作 在鎖屏狀態下也可以對用戶設置的某些應用程序進行操作 改進的復制、粘貼功能 更好的語音集成,實時錄音,文本聽寫等語音功能。 臉部識別進行鎖屏,可以通過臉部識別進行鎖屏。 新標簽頁模式的網頁瀏覽器,支持最大同時打開16個標簽頁。 自動同步用戶手機中的網頁書簽,可以在桌面版Chrome和其他Android設備中進行同步。 全新的現代化Roboto字體 內置流量監控功能,用戶可以對流量進行設置,超出設置流量時,手機會自動關閉上網功能,並且可以隨時查看已使用和未使用的流量,並且以報表的形式展現出來以幫助用戶了解使用情況。 能夠隨時關閉正在使用的應用程序 提升自帶的相機功能 內置圖片處理軟體 新的圖庫軟體 與其他第三方應用程序進行無縫銜接,用戶可以在任何界面看到自己需要的消息和圖像。 新的啟動畫面,主畫面右下角類似Tray的圖標,內有多個程序可運行。 Google Search Bar會設置在最上方 Apps/Widgets會類似Honeycomb模樣 增加支持硬體加速的功能 Wi-Fi直連功能 支持1080p視頻播放和錄制 Android 4.0.1 修復Android 4.0中的Bug。 Android 4.0.2 Android 4.0.2更新包於2011年11月28日正式發布,該更新包修復了存在於Verizon版本Galaxy Nexus中的Bug。 Android 4.0.3 Android 4.0.3更新包於2011年12月16日發布,包括修復Bug和系統的優化,並且針對圖形、資料庫、拼寫檢查、藍牙功能和其他功能的改進。公布了新的API,包括聯系人API,日歷增強,新的攝像頭應用程序,提高視頻穩定和QVGA解析度和輔助功能的改進,如屏幕的改進等。 Android 4.0.4 Android 4.0.4更新包於2012年2月6日發布,主要更新如下: 更快的運行性能 Android操作系統的漏洞(電池問題)修復 3G/4G切換改進 信號強度增強 新的Power菜單(與之前的4.0.2不同,接近4.0.3) 更快速啟動 自動亮度調節功能改動,有了平滑的過渡。 重新調整了相機的Holding down按鈕 多點觸控的問題解決 自動旋轉更迅速 瀏覽器的性能顯著提高 最近應用程序列表打開更快速 相機UI的變化 音量增大 鍵盤問題修復 更新新聞及天氣應用程序的UI 瀏覽器中的快速控制改進 Android 4.1(Jelly Bean「果凍豆」)更新包於2012年6月28日在Google I/O大會上隨搭載Android 4.1的Nexus 7平板電腦一起發布,可能的更新如下: 基於Android 4.0改善 「黃油」性能(Project Butter),意思是可以讓Jelly Bean的體驗像「黃油般順滑」(鎖定提升用戶頁面的速度與流暢性)。 「Google Now」可在Google日歷內加入活動舉辦時間、地點,系統就會在判斷當地路況後,提前在「適當的出門時間給予通知」,協助用戶在准時時間抵達。 新增離線語音輸入 通知中心顯示更多消息 更多的平板優化(主要針對小尺寸平板) 強化Voice Search語音搜索,與S Voice類近,相當於Apple Siri。 Google Play 增加電視視頻與電影的購買 提升反應速度 強化默認鍵盤 大幅改變用戶界面設計 更多的Google雲集成 惡意軟體的保護措施,強化ASLR Google Play 採用智能升級,更新應用只會下載有改變的部分以節約時間、流量、電量,平均只需下載原APK文件的三分之一。 不會內置Flash Player,並且Adobe聲明停止開發,但可自行安裝APK。 Android 4.1.1 Android 4.1.1更新包於2012年7月23日發布,主要是修復Nexus 7的Bug。 Android 4.1.2 Android 4.1.2更新包於2012年10月9日發布,主要更新如下: 加入主畫面的旋轉功能 一些錯誤修正 提升性能及穩定性 單手指開合通知中心消息 Android 4.2 Google原本預計於2012年10月29日於紐約發布Android 4.2,但因為颶風桑迪吹襲被取消,而改以新聞稿發布,以「一種新口味的果凍豆」(A new flavor of Jelly Bean)作口號。首款搭載Android 4.2的手機LG Nexus 4及平板電腦Nexus 10於2012年11月23日上市。
主要更新如下: PhotoSphere 360°全景拍攝 手勢輸入鍵盤 改進鎖屏:支持Widget,可於屏幕鎖定界面直接打開相機功能。 Daydream屏幕保護程序功能 可直接進行操作的狀態通知列功能 支持多重賬戶(僅適用於平板電腦) Miracast無線顯示分享功能 連點三次可放大整個顯示頁及兩指旋轉和縮放 增加為盲人用戶設計的語音輸出及手勢模式導航功能 內置時鍾新增世界時鍾,秒錶和定時器 Google Now新增以Gmail登錄信息作為數據源 Google Now新增航班追蹤功能、酒店、餐廳預訂,與音樂和電影推薦功能。 Gmail郵件可縮放顯示 Android 4.2.1 修復Android 4.2中的Bug。 Android 4.2.2 Android 4.2.2更新包於2013年2月11日發布,主要更新如下: 性能及穩定性的提升 一些錯誤修正 改善藍牙A2DP流問題 Google Play在下載內容時會顯示剩餘的時間 在快速設置中長按WiFi和藍牙圖標可切換開關 當設備電量低於95%並開始無線充電時會發出提示音 在USB Debug加入白名單功能 優化電池耗電量,增加續航時間。 Android 4.3 2013年7月24日與Nexus 7平板二代同步發表,主要更新如下: 支持多用戶登錄,支持一台終端設備上有多個登錄帳號。 「藍牙低功耗」功能,開啟藍牙後,耗電量相比之前大幅降低。 支持更多緩沖器對象 新版OpenGL ES 3.0著色語言,支持32 位整數和浮點數據類型以及操作。 增加多個紋理的支持,包括浮點紋理、深度紋理、頂點紋理等等。 多重渲染目標(Multiple Render Targets),讓GPU一次性渲染多個紋理。 多重采樣抗鋸齒(MSAA Render To Texture),讓3D物體的邊緣不出現毛刺,可提升圖像效果。 使用統一的紋理壓縮格式ETC 增加TRIM指令,使得內置存儲(Internal Storage)不會越用越慢。 新增App Opt功能(默認隱藏),允許用戶強行解除已安裝應用的特定許可權。 Android 4.3.1 2013年10月5日發布,改進系統性能和穩定性。 開發代號:Android L
2014年6月25日於Google I/O 2014大會上發布Developer版(Android L),之後在2014年10月15日正式發布且名稱定為Lollipop「棒棒糖」。 採用全新Material Design界面 支持64位處理器 全面由Dalvik轉用ART(Android Runtime)編譯,性能可提升四倍 改良的通知界面及新增優先模式 預載省電及充電預測功能 新增自動內容加密功能 新增多人設備分享功能,可在其他設備登錄自己賬號,並獲取用戶的聯系人、日歷等Google雲數據 強化網路及傳輸連接性,包括Wi-Fi、藍牙及NFC 強化多媒體功能,例如支持RAW格式拍攝 強化「OK Google」功能 改善Android TV的支持 提供低視力的設置,以協助色弱人士 改善Google Now功能 Android的下一個版本,即盛傳已久的Android M很可能會在Google I/O大會上被正式發布。一個在業內已經被熱議的議題是:Android M「為工作升級而生」(Android for Work Update)。有業內人士解釋道:「Android M將把Android的強大功能拓展至任何你所能看到的工作領域。 」「
根據Android系統以往的慣例,每一代新系統往往會根據其字母代號,對應一個關於零食的全名。如去年在Google I/O大會上發布的Android L,其代號「L」一開始還只是Google為開發者稱呼方便而准備的一個代號,但後來逐步演變成了「Lollipop」(棒棒糖Android 5.0)。所以,按照這種命名的傳統,Android [字母]這種新模式也將意味著,一款新口味Android「零食」即將出現。
主要新功能如下:
● 應用許可權管理
● SD卡可能和內置存儲「合並」
● Android Pay
● 原生指紋識別認證
● 自動應用數據備份
● App Links(盡量減少諸如「你想要使用什麼來打開這個?」的提醒)
● 打盹和應用待機功能
● 多窗口(隱藏技能,未來不確定)
●主題支持(隱藏技能,未來不確定)
● Dark主題(已經被移除,未來不確定)
● 可定製的Quick Toggles和其他UI調整
● 可視化的語音郵件支持
● 重新設計的時鍾插件和音樂識別插件
● 在設置中新出現的全新「Memory」選項條目(早期版本出現,不過後來被隱藏)
● 在完成截圖之後可以通過通知中心直接刪除截圖
● Google Now Launcher支持橫屏模式
● 帶滾動條和垂直滾動條支持的全新應用和窗口小部件抽屜
● 內置的文件管理器能夠獲得功能方面的明顯升級
● 支持原生點擊喚醒功能
● 可以選擇「heads up」或者「peeking」 通知
● 原生4K輸出支持
● 嚴格的APK安裝文件驗證
● 支持MIDI
● USB Type-C埠支持
● 全新的啟動動畫
● 引入「語音交互」API在應用中提供更好的語音支持
● 可通過語音命令切換到省電模式
● 可以通過藍牙鍵盤快捷方式來撤銷和重做文本
● 在聯系人應用中能夠對已經添加的聯系人進行合並、刪除或者分享功能。
● 會有針對文本選擇的浮動工具欄出現,以便於更快的選擇文本
● 默認應用的UI
● 允許通過分享菜單直接分享給聯系人好友
● 更細化的應用程序信息
● 原生藍牙手寫筆支持
● 分屏鍵盤
● 移動的收音機
● Mobile Radio Active服務電池續航BUG將會被修復
● 除重復來電之外優化勿擾模式
● 藍牙掃描來改善定位精準度
● 原生Flashlight API
● 更容易訪問控制多個聲音空控制( 鈴聲、多媒體和鬧鍾)
● 更平滑的聲音滑塊
『貳』 Android手機系統軟體apk開發製作
隨著Android安卓系統的日益廣泛使用,越來越多人發現手機潛在的力量,當然手機應用軟體app的朝陽也隨之並進,手機app軟體潛在著無線巨大的發展空間和利益金錢空間!例如說:微信!UC瀏覽器!手機游戲!等等各種。。。
1、環境搭建
1.1、JDK安裝
如果你還沒有JDK的話,可以去這里下載,接下來的工作就是安裝提示一步一步走。設置環境變數步驟如下:
我的電腦->屬性->高級->環境變數->系統變數中添加以下環境變數: java_HOME值為: D:Program FilesJavajdk1.6.0_18(你安裝JDK的目錄) CLASSPATH值為:.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%in; Path: 在開始追加 %JAVA_HOME%in; NOTE:前面四步設置環境變數對搭建Android開發環境不是必須的,可以跳過。
安裝完成之後,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version 查看JDK的版本信息。出現類似下面的畫面表示安裝成功了:
1.2、Eclipse安裝
如果你還么有Eclipse的話,可以去這里下載,下載如下圖所示的Eclipse IDE for Java Developers(92M)的win 32bit版:
解壓之後即可使用。
1.3、Android SDK安裝
在Android Developers下載android-sdk_r05-windows.zip,下載完成後解壓到任意路徑。
運行SDK Setup.exe,點擊Available Packages。如果沒有出現可安裝的包,請點擊Settings,選中Misc中的"Force https://..."這項,再點擊Available Packages 。 選擇希望安裝的SDK及其文檔或者其它包,點擊Installation Selected、Accept All、Install Accepted,開始下載安裝所選包 在用戶變數中新建PATH值為:Android SDK中的tools絕對路徑(本機為D:AndroidDevelopandroid-sdk-windows ools)。
“確定”後,重新啟動計算機。重啟計算機以後,進入cmd命令窗口,檢查SDK是不是安裝成功。 運行 android –h 如果有類似以下的輸出,表明安裝成功:
1.4、ADT安裝
打開 Eclipse IDE,進入菜單中的 "Help" -> "Install New Software" 點擊Add...按鈕,彈出對話框要求輸入Name和Location:Name自己隨便取,Location輸入http://dl-ssl.google.com/android/eclipse。如下圖所示:
確定返回後,在work with後的下拉列表中選擇我們剛才添加的ADT,我們會看到下面出有Developer Tools,展開它會有Android DDMS和Android Development Tool,勾選他們。 如下圖所示:
然後就是按提示一步一步next。
完成之後:
選擇Window > Preferences... 在左邊的面板選擇Android,然後在右側點擊Browse...並選中SDK路徑,本機為: D:AndroidDevelopandroid-sdk-windows 點擊Apply、OK。配置完成。
1.5、創建AVD
為使Android應用程序可以在模擬器上運行,必須創建AVD。
1、在Eclipse中。選擇Windows > Android SDK and AVD Manager 2、點擊左側面板的Virtual Devices,再右側點擊New 3、填入Name,選擇Target的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認值 4、點擊Create AVD即可完成創建AVD
注意:如果你點擊左側面板的Virtual Devices,再右側點擊New ,而target下拉列表沒有可選項時,這時候你:
點擊左側面板的Available Packages,在右側勾選https://dl-ssl.google.com/android/repository/repository.xml,如下圖所示:
然後點擊Install Selected按鈕,接下來就是按提示做就行了
要做這兩步,原因是在1.3、Android SDK安裝中沒有安裝一些必要的可用包(Available Packages)。
2、HelloWorld
通過File -> New -> Project 菜單,建立新項目"Android Project" 然後填寫必要的參數,如下圖所示:(注意這里我勾選的是Google APIs,你可以選你喜歡的,但你要創建相應的AVD)
相關參數的說明:
Project Name: 包含這個項目的文件夾的'名稱。 Package Name: 包名,遵循JAVA規范,用包名來區分不同的類是很重要的,我用的是helloworld.test。 Activity Name: 這是項目的主類名,這個類將會是Android的Activity類的子類。一個Activity類是一個簡單的啟動程序和控製程序的類。它可以根據需要創建界面,但不是必須的。 Application Name: 一個易讀的標題在你的應用程序上。 在"選擇欄"的 "Use default location" 選項,允許你選擇一個已存在的項目。
點擊Finish後,點擊Eclipse的Run菜單選擇Run Configurations… 選擇“Android Application”,點擊在左上角(按鈕像一張紙上有個“+”號)或者雙擊“Android Application”, 有個新的選項“New_configuration”(可以改為我們喜歡的名字)。 在右側Android面板中點擊Browse…,選擇HelloWorld 在Target面板的Automatic中勾選相應的AVD,如果沒有可用的AVD的話,你需要點擊右下角的Manager…,然後新建相應的AVD。如下圖所示:
然後點Run按鈕即可,運行成功的話會有Android的模擬器界面,如下圖所示:
『叄』 怎麼獲取android系統服務,如Uri,intent參數等,或者說去哪裡查看
android系統服務,如Uri,intent參數
可以在Intent中指定程序要執行的動作(比如:view,edit,dial),以及程序執行到該動作時所需要的資料。都指定好後,只要調用startActivity(),Android系統會自動尋找最符合你指定要求的應用程序,並執行該程序。
★intent大全:
1.從google搜索內容
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);
2.瀏覽網頁
Uri uri =Uri.parse("htt。。。。。。。。om");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
3.顯示地圖
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = newIntent(Intent.Action_VIEW,uri);
startActivity(it);
4.路徑規劃
Uri uri =Uri.parse("http。。。。。。。。。。/maps?
f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent it = newIntent(Intent.ACTION_VIEW,URI);
startActivity(it);
5.撥打電話
Uri uri =Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL,uri);
startActivity(it);
6.調用發簡訊的程序
Intent it = newIntent(Intent.ACTION_VIEW);
it.putExtra("sms_body", "TheSMS text");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);
7.發送簡訊
Uri uri =Uri.parse("smsto:0800000123");
Intent it = newIntent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "TheSMS text");
startActivity(it);
String body="this is sms demo";
Intent mmsintent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("smsto",
number, null));
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,true);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,true);
startActivity(mmsintent);
8.發送彩信
Uri uri =Uri.parse("content://media/external/images/media/23");
Intent it = newIntent(Intent.ACTION_SEND);
it.putExtra("sms_body","some text");
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType("image/png");
startActivity(it);
StringBuilder sb = new StringBuilder();
sb.append("file://");
sb.append(fd.getAbsoluteFile());
Intent intent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto",
number, null));
// Below extra datas are all optional.
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT,subject);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI,sb.toString());
intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,composeMode);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,exitOnSent);
startActivity(intent);
9.發送Email
Uri uri =Uri.parse("mailto:[email protected]");
Intent it = newIntent(Intent.ACTION_SENDTO, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL,"[email protected]");
it.putExtra(Intent.EXTRA_TEXT, "Theemail body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it,"Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"[email protected]"};
String[]ccs={"[email protected]"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "Theemail body text");
it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it,"Choose Email Client"));
Intent it = newIntent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text");
it.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it,"Choose Email Client"));
10.播放多媒體
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri =Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri,"audio/mp3");
startActivity(it);
Uri uri
=Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
11.uninstall apk
Uri uri =Uri.fromParts("package", strPackageName, null);
Intent it = newIntent(Intent.ACTION_DELETE, uri);
startActivity(it);
12.install apk
Uri installUri = Uri.fromParts("package","xxx", null);
returnIt = newIntent(Intent.ACTION_PACKAGE_ADDED, installUri);
打開照相機
<1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
this.sendBroadcast(i);
<2>long dateTaken = System.currentTimeMillis();
String name = createName(dateTaken) + ".jpg";
fileName = folder + name;
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, fileName);
values.put("_data", fileName);
values.put(Images.Media.PICASA_ID, fileName);
values.put(Images.Media.DISPLAY_NAME, fileName);
values.put(Images.Media.DESCRIPTION, fileName);
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName);
Uri photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(inttPhoto, 10);
14.從gallery選取圖片
Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(i, 11);
打開錄音機
Intent mi = new Intent(Media.RECORD_SOUND_ACTION);
startActivity(mi);
16.顯示應用詳細列表
Uri uri =Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
//where app_id is the application ID, findthe ID
//by clicking on your application on Markethome
//page, and notice the ID from the addressbar
剛才找app id未果,結果發現用package name也可以
Uri uri =Uri.parse("market://details?id=");
這個簡單多了
17尋找應用
Uri uri =Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
//where pkg_name is the full package pathfor an application
18打開聯系人列表
<1>
Intent i = new Intent();
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("vnd.android.cursor.item/phone");
startActivityForResult(i, REQUEST_TEXT);
<2>
Uri uri = Uri.parse("content://contacts/people");
Intent it = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(it, REQUEST_TEXT);
19 打開另一程序
Intent i = new Intent();
ComponentName cn = newComponentName("com.yellowbook.android2",
"com.yellowbook.android2.AndroidSearch");
i.setComponent(cn);
i.setAction("android.intent.action.MAIN");
startActivityForResult(i, RESULT_OK);
20.調用系統編輯添加聯系人(高版本SDK有效):
Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT);
it.setType("vnd.android.cursor.item/contact");
//it.setType(Contacts.CONTENT_ITEM_TYPE);
it.putExtra("name","myName");
it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,
"organization");
it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email");
it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone");
it.putExtra(android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,
"mobilePhone");
it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,
"workPhone");
it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title");
startActivity(it);
21.調用系統編輯添加聯系人(全有效):
Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts.Intents.Insert.NAME, "My Name");
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");
intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE);
intent.putExtra(Contacts.Intents.Insert.EMAIL, "[email protected]");
intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,
Contacts.ContactMethodsColumns.TYPE_WORK);
startActivity(intent);
★intent action大全:
android.intent.action.ALL_APPS
android.intent.action.ANSWER
android.intent.action.ATTACH_DATA
android.intent.action.BUG_REPORT
android.intent.action.CALL
android.intent.action.CALL_BUTTON
android.intent.action.CHOOSER
android.intent.action.CREATE_LIVE_FOLDER
android.intent.action.CREATE_SHORTCUT
android.intent.action.DELETE
android.intent.action.DIAL
android.intent.action.EDIT
android.intent.action.GET_CONTENT
android.intent.action.INSERT
android.intent.action.INSERT_OR_EDIT
android.intent.action.MAIN
android.intent.action.MEDIA_SEARCH
android.intent.action.PICK
android.intent.action.PICK_ACTIVITY
android.intent.action.RINGTONE_PICKER
android.intent.action.RUN
android.intent.action.SEARCH
android.intent.action.SEARCH_LONG_PRESS
android.intent.action.SEND
android.intent.action.SENDTO
android.intent.action.SET_WALLPAPER
android.intent.action.SYNC
android.intent.action.SYSTEM_TUTORIAL
android.intent.action.VIEW
android.intent.action.VOICE_COMMAND
android.intent.action.WEB_SEARCH
android.net.wifi.PICK_WIFI_NETWORK
android.settings.AIRPLANE_MODE_SETTINGS
android.settings.APN_SETTINGS
android.settings.APPLICATION_DEVELOPMENT_SETTINGS
android.settings.APPLICATION_SETTINGS
android.settings.BLUETOOTH_SETTINGS
android.settings.DATA_ROAMING_SETTINGS
android.settings.DATE_SETTINGS
android.settings.DISPLAY_SETTINGS
android.settings.INPUT_METHOD_SETTINGS
android.settings.INTERNAL_STORAGE_SETTINGS
android.settings.LOCALE_SETTINGS
android.settings.LOCATION_SOURCE_SETTINGS
android.settings.MANAGE_APPLICATIONS_SETTINGS
android.settings.MEMORY_CARD_SETTINGS
android.settings.NETWORK_OPERATOR_SETTINGS
android.settings.QUICK_LAUNCH_SETTINGS
android.settings.SECURITY_SETTINGS
android.settings.SETTINGS
android.settings.SOUND_SETTINGS
android.settings.SYNC_SETTINGS
android.settings.USER_DICTIONARY_SETTINGS
android.settings.WIFI_IP_SETTINGS
android.settings.WIFI_SETTINGS
android.settings.WIRELESS_SETTINGS
『肆』 android中常用的資源有哪些
Android 資源類型
1.字元串資源
>>1.普通字元串
>>2.字元串數組
復制代碼
<resources>
<string-array name="planets_array">
<item>aaa</item>
<item>bbb</item>
</string-array>
</resources>
復制代碼
獲取方式:getResources().getStringArray(R.array.planets_array)
>>3.復數字元串資源
某些自然語言中,不同的數字在使用方法上會有所不同,比如one book,two books。當數量大於1時,會使用不同的名詞或其它復數形式;
復制代碼
<resources>
<plurals name="numberOfp">
<item quantity="one">one person</item>
<item quantity="other">more persons</item>
</plurals>
</resources>
復制代碼
quantity屬性的值除了one和other外,還可以是zero,two,few,many;
引用復數字元串:
// 引用數字為1的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,1);
// 引用數字為其它值的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,10,10);
>>4.佔位符格式化字元串
常用的格式化字元串三種方法:
>>1.在字元串中使用引號
字元串中的值雖然可以隨意指定,但是當遇到特殊符號時(雙引號,單引號)就需要採取特殊的方法來處理這些符號。
如果是單引號(')可以使用轉義符(\)或用雙引號(")將整個字元串括起來,如果是雙引號,可以在雙引號前使用轉義符(\)。
<resources>
<string name="str1">"This'll work"</string> This'll work
<string name="str2">This\'ll work</string> This'll work
<string name="str3">\"apple\"</string> "apple"
</resources>
>>2.用佔位符格式化字元串
使用String.format(String,Object...)方法可以格式化帶佔位符的字元串,只需要在字元串中插入佔位符,就可以使用String.format方法格式化字元串資源,format方法要求的佔位符用%1,%,...,%n,其實第n個佔位符與format方法的n+1個參數值對應;
<resources>
<!-- $s表示該佔位符被字元串替換,$d表示該佔位符被整數替換 -->
<string name="str1">hello,%1$s!You have %2$d new message</string>
</resources>
String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);
>>3.使用HTML標簽格式化字元串資源
字元串資源支持一些HTML標簽,因此可以直接在字元串資源中使用這些HTML標簽格式化字元串
字元串資源支持如下的HTML標簽
<b>粗體字
<i>斜體定
<u>帶下劃線的字
有時需要同時使用HTML標簽和佔位符格式化字元串,如果使用String.format方法格式化字元串,會忽略字元串中的所有HTML標簽。為了使format方法可以格式化帶
HTML標簽的確字元,需要使用Html.formHTML方法處理字元串;
<resources>
<string name="hello_world">Welcome to <b>android</b></string>
<string name="str2">Hello,%1$s! You have <b> %2d new messages </b></string> <!--同時包含佔位符和html標簽的字元串-->
</resources>
由於需要使用Html.formHTML方法處理字元串,因此HTML標簽中的 "<" 需要使用 "<" 表示 ">" 並不需要處理
獲取字元串:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text);
// 如果format的某個參數包含HTML的特殊字元,如"<","&",可以使用如下方式讀取字元串的值;
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);
2.Layout資源
1、如果根節點是View,除了<requestFocus>標簽外,不能添加任何子標簽,<requestFocus>可能被添加到布局文件的任何View中,表示該標簽對應的控制項在顯示時處於焦點狀態,整個布局文件只能有一個<requestFocus>標簽
2、根節點是ViewGroup,常用的布局都是ViewGroup的子類
3、重用布局文件
如果想重用某個布局文件,可以使用<include>標簽
<include layout="@layout/xx_layout" />
如果想讓一個布局文件被另一個布局文件引用(使用<include>標簽),可以使用<merge>作為被引用布局文件的根節點,由於<merge>並不會生成任何標簽(在大量引用布局文件時不至於生成大量無用的標簽),但是xml文件必須要有一個根節點,因此<merge>所起的作用就是作為xml文件的根節點,以使xml文件在編譯時不至於出錯,可以把<merge>當成<FrameLayout>使用;
3.圖像資源
在圖像資源中可以存儲圖像文件,還可以使用xml格式的圖像資源來控制項圖像的狀態和行為;
>>1.普通圖像資源
Drawable da = getResources().getDrawable(R.drawable.xxx);
>>2.xml圖像資源
xml圖像資源其實就是在drawable目錄中指定的xml文件,此種方式可以額外指定圖像的某些屬性,如圖像拉動、排列方式;
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="repeat" >
</bitmap>
>>3.Nine-Patch圖像資源
Nine-Patch圖像資源文件必須以9.png作為文件擴展名,如abc.9.png
該圖像資源的主要作用是:防止圖像的某一部分被拉伸;確定將圖像作為背景圖的控制項中內容顯示的位置;
Android SDK本身提供了一個Draw 9-patch的工具,啟動<sdk目錄>\tools\draw9patch.bat命令啟動該工具;
可以通過此工具在png圖的四周繪制1個像素粗的直線,上邊緣和左邊緣的直線分別表示圖像在水平和垂直方向可位值的范圍。如果水平或垂直方向的某個區域不需要拉伸,則可不繪制相應的直線;右邊緣和下邊緣的直線分別表示圖像所在控制項中內容的顯示範圍,內容只在右邊緣和下邊緣繪制直線的區域顯示,表示內容顯示範圍和拉伸范圍的兩給直線有一個重要區別就是表示內容顯示範圍的直線中間不能斷開,而表示拉伸范圍的直線中間可以斷開;
Nine-Patch圖像資源與普通圖像資源引用方法相同,在引用時只寫文件名,活力.9.png;
>>4.XML Nine-Patch圖像資源
Nine-Patch圖像資源也有與其對應的xml圖像資源,使用<nine-patch>標簽來引用Nine-Patch格式的圖像,有一個設置抖動的android:dither屬性;
>>5.圖層資源
圖層資源類似於<FrameLayout>不同的是<FrameLayout>標簽中可以包含任意的控制項,而圖層資源每一層都只有是圖像,定義圖層資源必須使用<layer-list>作為資源文件的根節點,<layer-list>標簽中包含多個<item>標簽,每一個標簽表示一個圖像,最後一個<item>標簽顯示在最頂層;
默認情況下,圖像會盡量充滿顯示圖像的范圍,圖像可能會有拉伸,為了避免圖像拉伸,可以在<item>標簽中使用<bitmap>標簽引用圖像;
復制代碼
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="10dip" 底端偏移的像素
android:left="10dip" 左側偏移的像素
android:right="10dip" ...
android:top="10dip"> ...
<bitmap
android:gravity="center"
android:src="@drawable/hell" />
</item>
</layer-list>
復制代碼
某些情況下,可以使用圖層來代替<FrameLayout>
>>6.圖像狀態資源,處理控制項不同狀態下的顯示狀態
復制代碼
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bm" android:state_focused="true"></item>
<item android:drawable="@drawable/bm" android:state_pressed="true"></item>
<item android:drawable="@drawable/bm"></item>
</selector>
// android:state_focused/pressed設置為true表示當前item的drawable屬性為獲取焦點和按下時的drawable樣式
復制代碼
>>7.圖像級別(Level)資源
圖像資源狀態只能指定幾種有限的狀態,可以通過圖像級別指定更多的狀態;圖像級別是一個整數的區間,可以通過ImageView.setImageLevel或Drawable.setLevel方法切換不同狀態的圖像;圖像級別資源是xml文件,必須以<level-list>為根節點,每一個item表示一個級別區間,下面是一個xml文件;通過ImageView.setImageLevel(level),根據level所在的區間設定顯示的圖像資源,如果level不在任一區間內則清空ImageView當前圖像;
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" />
<item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" />
</level-list>
>>8.淡入淡出(Cross-fade)資源
也是切換兩個圖像(不支持多於兩個圖像的切換),並且使這兩個圖像以淡入淡出效果進行切換,如電燈在開關時逐漸變亮或逐漸變暗;
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/hell"/>
<item android:drawable="@drawable/hell"/>
</transition>
TransitionDrawable da = ...;
// 從第一張圖片切換到第二張圖片,時間效果為1秒
da.startTransition(1000);
// 從第二張圖片切換到第一張圖片,時間效果為1秒
da.reverseTransition(1000);
>>9.嵌入(insert)圖像資源
使用場景:要顯示的圖像要求要小於裝載圖像的View(圖小於View區域),也是通過xml資源定義,只有一個節點inset。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:insetLeft="10dip" > <!--圖像距離左邊的距離,延伸-->上/下/右的距離-->
</inset>
>>10.剪切(Clip)圖像資源,使用剪切圖像資源可以只顯示圖像的一部分,如可以通過此來製作進度條;
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal" // 指定截取的方向
android:drawable="@drawable/hell" // 指定要截取的圖像
android:gravity="left" > // 指定截取的方式,在此為從左側開始截取
</clip>
ClipDrawable cd = ...;
cd.setLevel(1000);
上面ClipDrawable.setLevel(level)設置截取的圖像寬度,ClipDrawable預設了最大值10000(表示不進行截取),最小值為0(表示不顯示);
>>11. 比例(Scale)圖像資源
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:scaleGravity="center" // 設置圖像顯示的位置
android:scaleHeight="70%" // 設置圖像顯示的高度
android:scaleWidth="80%" > // 設置圖像顯示的寬度
</scale>
>>12.形狀資源
復制代碼
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > shape可以指定就矩形,oval(橢圓),line(直線),ring(圓)
<corners> 定義圓角
</corners>
<gradient
android:angle="45"
android:startColor="#000000"
android:endColor="#FFFFFF" > 定義顏色漸變,從左下角到或上角
</gradient>
<padding> 定義控制項內容到邊框的距離
</padding>
<stroke> 定義邊線
</stroke>
<solid> 定義填充
</solid>
<size> 定義大小
</size>
</shape>
復制代碼
13.菜單資源
菜單不僅可以在onCreateContextMenu或onCreateOptionsMenu方法中通過代碼創建,還可以在res/menu目錄中建立相應的菜單資源文件,並在上面兩個方法中載入菜單資源;
菜單資源文件必須以<menu>標簽作為根節點,每一個菜單項用一個<item>表示,如果要定義子菜單,可以在<item>標簽中包含<menu>標簽;如果想將多個菜單項劃為一組,可以使用<group>包含多個<item>標簽;
復制代碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
復制代碼
查看MenuInflater.inflate(int,Menu)
復制代碼
/**
* Inflate a menu hierarchy from the specified XML resource.
*
* @param menuRes Resource ID for an XML layout resource to load (e.g., <code>R.menu.main_activity</code>)
* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.
*/
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {
parser = mContext.getResources().getLayout(menuRes);
AttributeSet attrs = Xml.asAttributeSet(parser);
parseMenu(parser, attrs, menu);
} catch ...finally {
if (parser != null) parser.close();
}
}
復制代碼
14.樣式與主題(style/theme)
>>1.樣式style
android中樣式和css中樣式作用是一樣的,都是用於為界面元素定義顯示風格,它是一個包含一個或者多個控制項屬性的集合。
定義樣式需要在res/values/styles.xml中進行定義,如下是一個樣式的定義:
<style name="textViewStyle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="textViewStyle1" parent="textViewStyle"></style><!-- 此樣式繼承自textViewStyle -->
<style name="textViewStyle.Livingstone"><!-- 樣式繼承的另一種寫法,但不可用此寫法繼承Android自帶的定義樣式? -->
<item name="android:textColor">#00FF00</item>
</style>
所有定義的樣式都會在R文件中自動生成一個資源ID,加一個點表示樣式繼承會生成上圖所示的資源id;
樣式的引用:
<TextView
style="@style/textViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
>>2.主題Theme
主題應用於整個應用或者activity,樣式應用於具體的控制項上。主題的應用與樣式定義一樣,不同的是主題還可以設置窗口的顯示風格;主題的引用需要在清單文件中進行引用,如引用到整個應用之上就需要在Application節點中進行配置引用,而引用到單個Activity只需要在此Activity中進行配置引用;
復制代碼
<style name="Livingstonetheme"><!--此定義是一個無Title的主題-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">?android:windowNoTitle</item>
<!-- 問號表示引用此主題中android:windowNoTitle屬性的值 -->
<item name="android:textSize">18sp</item>
</style>
復制代碼
android系統定義了一些屬性,如android:theme="@android:style/Theme.Dialog",該主題可以讓Activity看起來像一個對話框,更多主題可以在文檔reference->android->R.style中查看。當主題裡面的樣式屬性值與樣式裡面的屬性值發生沖突的時候會顯示樣式裡面的值;
15.其它資源
在資源文件中還可以包括尺寸(dimen)、整數(integer)、布爾(bool) 、整形數組資源(integer-array)、資源數組(array)、顏色(color)
TypedArray ta = getResources().obtainTypedArray(int id); // 獲取數組資源,包括integer-array、array
Final總結:
除了res/values目錄中的資源名,其它目錄的資源都會以文件名在R類的相應子類中生成變數;而res/values中的資源會以name屬性值為變數名在R類的相應子類中生成變數;
『伍』 Google I/O 2016 上發布的 Android N 有哪些新特性
1.多窗口支持
在 Android N 中,我們為該平台引入了一個新的而且非常需要的多任務處理功能 — 多窗口支持。
現在,用戶可以一次在屏幕上打開兩個APP。
在運行 Android N 的手機和平板電腦上,用戶可以並排運行兩個APP,或者處於分屏模式時一個APP位於另一個APP之上。用戶可以通過拖動兩個APP之間的分隔線來調整APP。
在 Android TV 設備上,APP可以將自身置於畫中畫面模式,從而讓它們可以在用戶瀏覽或與其他APP交互時繼續顯示內容。如需了解詳細信息,請參閱下文。
多窗口支持為您提供新的吸引用戶方式,特別是在平板電腦和其他更大屏幕的設備上。您甚至可以在您的APP中啟用拖放,從而使用戶可以方便地將內容拖放到您的應用或從其中拖出內容—這是一個非常好的增強用戶體驗的方式。
向您的APP添加多窗口支持並配置多窗口顯示的處理方式非常簡單。例如,您可以指定您的 Activity 允許的最小尺寸,從而防止用戶將 Activity 調整到該尺寸以下。您還可以為APP禁用多窗口顯示,這可確保系統將僅以全屏模式顯示APP。
如需了解詳細信息,請參閱多窗口支持開發者文檔。
2.Notification 增強功能
在 Android N 中,我們重新設計了Notification,使其更易於使用並且速度更快。部分變更包括:
- 模板更新:我們正在更新Notification模板,新強調了圖片跟頭像。開發者將能夠充分利用新模板,只需進行少量的代碼調整。
- 綁定的Notification:系統可以將消息組合在一起(例如,按消息主題)並顯示組。用戶可以適當地進行 Dismiss 或 Archive 等操作。如果您已實現 Android Wear 的通知,那麼您已經很熟悉此模型。
- 直接回復:對於實時通信應用,Android 系統支持內聯回復,以便用戶可以直接在通知界面中快速回復簡訊。
- 自定義視圖:兩個新的 API 讓您在通知中使用自定義視圖時可以充分利用系統的風格,如Notification標題和操作。
如需了解如何實現新功能的信息,請參閱通知指南。
2.配置文件指導的 JIT/AOT 編譯
在 Android N 中,我們添加了 Just in Time (JIT) 編譯器,對 ART 進行代碼分析,讓它可以在應用運行時持續提升 Android 應用的性能。JIT 編譯器對 Android 運行組件當前的 Ahead of Time (AOT) 編譯器進行了補充,有助於提升運行時性能,節省存儲空間,加快應用更新和系統更新速度。
配置文件指導的編譯讓 Android 運行組件能夠根據應用的實際使用以及設備上的情況管理每個應用的 AOT/JIT 編譯。例如,Android 運行組件維護每個應用的熱方法的配置文件,並且可以預編譯和緩存這些方法以實現最佳性能。對於應用的其他部分,在實際使用之前不會進行編譯。
除提升應用的關鍵部分的性能外,配置文件指導的編譯還有助於減少整個 RAM 佔用,包括關聯的二進制文件。此功能對於低內存設備非常尤其重要。
Android 運行組件在管理配置文件指導的編譯時,可最大程度降低對設備電池的影響。僅當設備處於空閑狀態和充電時才進行編譯,從而可以通過提前執行該工作節約時間和省電。
3.快速的應用安裝路徑
Android 運行組件的 JIT 編譯器最實際的好處之一是應用安裝和系統更新的速度。即使在 Android 6.0 中需要幾分鍾進行優化和安裝的大型應用,現在只需幾秒鍾就可以完成安裝。系統更新也變得更快,因為省去了優化步驟。
4.瞌睡模式
Android 6.0 推出了瞌睡模式,即設備處於空閑狀態時,通過推遲應用的 CPU 和網路活動以實現省電目的的系統模式,例如,設備放在桌上或抽屜里時。
現在,在 Android N 中,瞌睡模式又前進了一步,在外出時也可以省電。只要屏幕關閉了一段時間,且設備未插入電源,瞌睡模式就會對應用使用熟悉的 CPU 和網路限制。這意味著用戶即使將設備放入口袋裡也可以省電。
屏幕關閉片刻後,設備在使用電池時,瞌睡模式將限制網路訪問,同時延遲作業和同步。在短暫的維護時間范圍後,其允許應用訪問網路,並執行延遲的作業/同步。打開屏幕或將設備插入電源會使設備退出瞌睡模式。
當設備再次處於靜止狀態時,屏幕關閉且使用電池一段時間,瞌睡模式針對 PowerManager.WakeLock,AlarmManager 警報和 GPS/Wi-Fi 掃描應用完整 CPU 和網路限制。
無論設備是否處於運動狀態,將應用調整到瞌睡模式的最佳做法均相同,因此,如果您已更新應用以妥善處理瞌睡模式,則一切就緒。如果不是,請立即開始將應用調整到瞌睡模式。
5.Project Svelte:後台優化
Project Svelte 在持續改善,以最大程度減少生態系統中一系列 Android 設備中系統和應用使用的 RAM。在 Android N 中,Project Svelte 注重優化在後台中運行應用的方式。
後台處理是大多數應用的一個重要部分。處理得當,可讓您實現非常棒的用戶體驗 — 即時、快速和情境感知。如果處理不得當,後台處理會毫無必要地消耗 RAM(和電池),同時影響其他應用的系統性能。
自 Android 5.0 發布以來,JobScheler 已成為執行後台工作的首選方式,其工作方式有利於用戶。應用可以在安排作業的同時允許系統基於內存、電源和連接情況進行優化。JobScheler 可實現控制和簡潔性,我們想要所有應用都使用它。
另一個非常好的選擇是 GCMNetworkManager(Google Play 服務的一部分),其在舊版 Android 中提供類似的作業安排和兼容性。
我們在繼續擴展 JobScheler 和 GCMNetworkManager,以符合多個用例 — 例如,在 Android N 中,現在,您可以基於內容提供程序中的更改安排後台工作。同時,我們開始棄用一些較舊的模式,這些模式會降低系統性能,特別是低內存設備的系統性能。
在 Android N 中,我們刪除了三個常用隱式廣播 — CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO — 因為這些廣播可能會一次喚醒多個應用的後台進程,同時會耗盡內存和電池。如果您的應用收到這些廣播,請充分利用 N Developer Preview 以遷移到 JobScheler 和相關的 API。
如需了解詳情,請查看後台優化文檔。
6.Data Saver
在移動設備的整個生命周期,蜂窩數據計劃的成本通常會超出設備本身的成本。對於許多用戶而言,蜂窩數據是他們想要節省的昂貴資源。
Android N 推出了 Data Saver 模式,這是一項新的系統服務,有助於減少應用使用的蜂窩數據,無論是在漫遊,賬單周期即將結束,還是使用少量的預付費數據包。Data Saver 讓用戶可以控制應用使用蜂窩數據的方式,同時讓開發者打開 Data Saver 時可以提供更多有效的服務。
用戶在 Settings 中啟用 Data Saver 且設備位於按流量計費的網路上時,系統屏蔽後台數據使用,同時指示應用在前台盡可能使用較少的數據 — 例如,通過限制用於流媒體服務的比特率、降低圖片質量、延遲最佳的預緩沖等方法來實現。用戶可以將特定應用加入白名單以允許後台按流量的數據使用,即使在打開 Data Saver 時也是如此。
Android N 繼承了 ConnectivityManager,以便為應用檢索用戶的 Data Saver 首選項並監控首選項變更提供一種方式。所有應用均應檢查用戶是否已啟用 Data Saver 並努力限制前台和後台數據的使用。
7.快速設置Tile API
「快速設置」通常用於直接從通知欄顯示關鍵設置和操作,非常簡單。在 Android N 中,我們已擴展「快速設置」的范圍,使其更加有用更方便。
我們為額外的「快速設置」Tile添加了更多空間,用戶可以通過向左或向右滑動跨分頁的顯示區域訪問它們。我們還讓用戶可以控制顯示哪些「快速設置」Tile以及顯示的位置 — 用戶可以通過拖放Tile來添加或移動Tile。
對於開發者,Android N 還添加了一個新的 API,從而讓您可以定義自己的「快速設置」Tile,使用戶可以輕松訪問您應用中的關鍵控制項和操作。
對於急需或頻繁使用的控制項和操作,保留「快速設置」Tile,且不應將其用作啟動應用的快捷方式。
定義Tile後,您可以將它們顯示給用戶,用戶可通過拖放將Tile添加到「快速設置」。
如需創建應用Tile的更多信息,請參閱可下載的 API 參考中的 android.service.quicksettings.Tile。
8.號碼屏蔽
Android N 現在支持在平台中進行號碼屏蔽,提供框架 API,讓服務提供商可以維護屏蔽的號碼列表。默認簡訊應用、默認手機應用和提供商應用可以對屏蔽的號碼列表進行讀取和寫入操作。其他應用則無法訪問此列表。
通過使號碼屏蔽成為平台的標准功能,Android 為應用提供一致的方式來支持廣泛的設備上的號碼屏蔽。應用可以利用的其他優勢包括:
- 還會屏蔽已屏蔽的來電號碼發出的簡訊
- 通過 Backup & Restore(備份和還原)功能可以跨重置和設備保留屏蔽的號碼
- 多個應用可以使用相同的屏蔽號碼列表
此外,通過 Android 的運營商應用集成表示運營商可以讀取設備上屏蔽的號碼列表,並為用戶執行服務端屏蔽,以阻止不需要的來電和簡訊通過任何介質(如 VOIP 端點或轉接電話)到達用戶。
如需了解詳細信息,請參閱可下載的 API 參考中的 android.provider.BlockedNumberContract。
9.來電過濾
Android N 允許默認的手機應用過濾來電。手機應用執行此操作的方式是實現新的 CallScreeningService,該方法允許手機應用基於來電的 Call.Details 執行大量操作,例如:
- 拒絕來電
- 不允許來電到達呼叫日誌
- 不向用戶顯示來電通知
如需了解詳細信息,請參閱可下載的 API 參考中的 android.telecom.CallScreeningService。
10.多區域設置支持、多語言
Android N 現在允許用戶在設置中選擇多個區域設置,以更好地支持雙語用例。應用可以使用新的 API 獲取用戶選擇的區域設置,然後為多區域設置用戶提供更成熟的用戶體驗 — 如以多個語言顯示搜索結果,並且不會以用戶了解的語言翻譯網頁。
除多區域設置支持外,Android N 還擴展了用戶可用的語言范圍。它針對常用語言提供超過 25 種的變體,如英語、西班牙語、法語和阿拉伯語。它還針對 100 多種新語言添加了部分支持。
應用可以通過調用 LocaleList.GetDefault() 獲取用戶設置的區域設置列表。為支持擴展的區域設置數量,Android N 正在改變其解析資源的方式。請務必使用新的資源解析邏輯測試和驗證您的應用是否能如期運行。
如需有關新資源解析行為和應遵循的最佳做法的更多信息,請參閱多語言支持。
11.Android 中的 ICU4J API
Android N 目前在 Android 框架(位於 android.icu 軟體包下)中提供 ICU4J API 的子集。遷移很簡單,主要是需要從 com.java.icu 命名空間更改為 android.icu。如果您已在您的應用中使用 ICU4J 捆綁包,切換到 Android 框架中提供的 android.icu API 可以大量節省 APK 大小。
如果要了解有關 Android ICU4J API 的更多信息,請參閱 ICU4J 支持。
12.OpenGL™ ES 3.2 API
Android N 添加了框架介面和對 OpenGL ES 3.2 的平台支持,包括:
- 來自 Android 擴展包 (AEP) 的所有擴展(EXT_texture_sRGB_decode 除外)。
- 針對 HDR 的浮點幀緩沖和延遲著色。
- BaseVertex 繪圖調用可實現更好的批處理和流媒體服務。
- 強大的緩沖區訪問控制可減少 WebGL 開銷。
Android N 上適用於 OpenGL ES 3.2 的框架 API 與 GLES32 類一起提供。使用 OpenGL ES 3.2 時,請務必通過 標記和 android:glEsVersion 屬性在您的清單文件中聲明要求。
如需了解有關使用 OpenGL ES 的信息,包括如何在運行時檢查設備支持的 OpenGL ES 版本,請參閱 OpenGL ES API 指南。
13.Android TV 錄制
Android N 通過新的錄制 API 添加了從 Android TV 輸入服務錄制和播放內容的功能。構建在現有時移 API 之上,TV 輸入服務可以控制能夠錄制的渠道數據、保存錄制的會話的方式,同時可通過錄制的內容管理用戶交互。
如需了解詳細信息,請參閱 Android TV 錄制 API。
14.Android for Work
Android for Work 針對運行 Android N 的設備添加了許多新功能和 API。部分重要內容如下— 有關與 Android N 相關的 Android for Work 更新的完整列表,請參閱 Android for Work 變更。
15.關閉工作
在具有託管配置文件的設備上,用戶可以切換工作模式。工作模式關閉時,管理的用戶臨時關閉,其禁用託管配置文件應用、後台同步和通知。這包括配置文件所有者應用。關閉工作模式時,系統顯示永久狀態圖標,以提醒用戶他們無法啟動工作應用。啟動器指示該工作應用和小組件無法訪問。
16.Always on VPN
設備所有者和配置文件所有者可以確保工作應用始終通過指定的 VPN 連接。系統在設備啟動後自動啟動該 VPN。
新的 DevicePolicyManager 方法為 setAlwaysOnVpnPackage() 和 getAlwaysOnVpnPackage()。
由於 VPN 服務無需應用交互即可由系統直接綁定,因此,VPN 客戶端必須針對 Always on VPN 處理新的入口點。和以前一樣,由與操作匹配的 Intent 過濾器將服務指示給系統。android.net.VpnService。
用戶還可以使用 Settings>More>Vpn 在主要用戶中手動設置實現 VPNService 方法的 Always on VPN 客戶端。
17.輔助工具增強功能
Android N 現在針對新的設備設置直接在歡迎屏幕上提供「Vision Settings」。這使用戶可以更容易發現和配置他們設備上的輔助工具功能,包括放大手勢、字體大小、顯示屏尺寸和 TalkBack。
隨著這些輔助工具功能更為突出,在啟用這些功能後,您的用戶更可能試用您的應用。請務必提前啟用這些設置測試您的應用。您可以通過 Settings > Accessibility 啟用它們。
還是在 Android N 中,輔助工具服務現在可以幫助具有動作障礙的用戶觸摸屏幕。全新的 API 允許使用人臉追蹤、眼球追蹤、點掃描等功能構建服務,以滿足這些用戶的需求。
如需了解詳細信息,請參閱可下載的 API 參考 中的 android.accessibilityservice.GestureDescription
18.直接啟動
直接啟動可以縮短設備啟動時間,讓注冊的應用具有有限的功能,即使在意外重啟後。例如,如果當用戶睡覺時加密的設備重啟,那麼注冊的警報、消息和來電現在可以和往常一樣繼續通知用戶。這也意味著重啟後輔助工具服務會立即可用。
在 Android N 中,直接啟動充分利用基於文件的加密,以針對系統和應用數據啟用細化的加密策略。為系統和應用數據。系統針對選定的系統數據和顯式注冊的應用數據使用設備加密的存儲。默認情況下,憑據加密的存儲可用於所有其他系統數據、用戶數據、應用及應用數據。
啟動時,系統在受限的模式中啟動,僅訪問設備加密的數據,不會對應用或數據進行常規訪問。如果您有想要在此模式下運行的組件,您可以通過在清單文件中設置標記注冊它們。重啟後,系統通過廣播 LOCKED_BOOT_COMPLETED Intent 激活注冊的組件。系統確保注冊的設備加密的應用數據在解鎖前可用。所有其他數據在用戶確認鎖定屏幕憑據進行解密前均不可用。
如需了解詳細信息,請參閱直接啟動。
19.密鑰認證
使用硬體支持的密鑰庫,可更安全地在 Android 設備上創建、存儲和使用加密密鑰。它們可保護密鑰免受 Linux 內核、潛在的 Android 漏洞的攻擊,也可防止從已取得 root 許可權的設備提取密鑰。
為了讓硬體支持的密鑰庫使用起來更簡單和更安全,Android N 引入了密鑰認證。應用和關閉的設備可使用密鑰認證以堅決地確定 RSA 或 EC 密鑰對是否受硬體支持、密鑰對的屬性如何,以及其使用和有效性有何限制。
應用和關閉的設備服務可以通過 X.509 認證證書(必須由有效的認證密鑰簽署)請求有關密鑰對的信息。認證密鑰是一個 ECDSA 簽署密鑰,其在出廠時被注入設備的硬體支持的密鑰庫。因此,有效的認證密鑰簽署的認證證書可確認硬體支持的密鑰庫是否存在,以及該密鑰庫中密鑰對的詳細信息。
為確保設備使用安全的官方 Android 出廠映像,密鑰認證要求設備 bootloader 向可信執行環境 (TEE) 提供以下信息:
設備上安裝的操作系統版本和補丁級別
驗證的啟動公鑰和鎖定狀態。
如需了解有關硬體支持的密鑰庫功能的詳細信息,請參閱硬體支持的密鑰庫指南。
除密鑰認證外,Android N 還推出了指紋綁定密鑰,在指紋注冊時不會撤銷。
20.網路安全性配置
在 Android N 中,通過使用說明性網路安全性配置(而不是使用傳統的易出錯的編程 API(例如,X509TrustManager)),應用可以安全地自定義其安全(HTTPS、TLS)連接的行為,無需任何代碼修改。
支持的功能:
自定義信任錨。讓應用可以針對其安全連接自定義哪些證書頒發機構 (CA) 受信任。例如,信任特定的自簽署證書或受限的公共 CA 集。
僅調試重寫。讓應用開發者可以安全調試其應用的安全連接,而不會增加安裝基礎的風險。
明文流量退出。讓應用可以防止自身意外使用明文流量。
固定證書。這是一項高級功能,讓應用可以針對安全連接限制哪些伺服器密鑰受信任。
如需了解詳細信息,請參閱網路安全性配置。
『陸』 myeclipse怎麼搭建android開發環境
myeclipse搭建android開發環境安裝adt就可以。
工具/原料
eclipse
jdk
方法/步驟
從eclipse中選擇help下面的install new software