天天看點

Android4.0新的SDK新特性 (漢化)

Android 4.0 是一次重要的平台釋出版,為使用者和應用程式開發者增加了大量的新特性。在下面我們将讨論的所有新特性和API中,因為它将 Android 3.x 版本中廣泛使用的API和全息圖像主題帶給了小螢幕裝置,是以我們說 Android 4.0 是一次重要的平台釋出版。作為一名開發者,現在你擁有了單一的平台和統一的 API 架構,使你可以開發,并通過一個APK 來釋出你的應用程式,并且可以為運作相同版本 Android(Android 4.0[API級别14]或以上版本) 的手機、平闆電腦和其他裝置提供優化了的使用者體驗。

Social APIs in Contacts Provider

User Profile

最新的android包含了一個機主的個人檔案,在 ContactsContract.Profile表裡,通過建立一個ContactsContract.RawContacts記錄, 社交應用程式可以維護一個使用者個人資料資料。這個新的聯系人資料表的定義不同于以往的聯系人資料表的定義,你必須在 CONTENT_RAW_CONTACTS_URI表裡建立1個内容。聯系人資料在這個表中被加上了"Me"标簽,隻能單一使用者可見。

增加一個新的聯系人資料需要 WRITE_PROFILE權限,讀取該聯系人資料表需要READ_PROFILE權限。大多數的應用程式需要使用者資料,甚至是提供資料給該資料。但是讀取使用者資料是一個敏感的權限,你應該期望使用者對需要讀取使用者資料的應用保持懷疑态度。

Invite Intent

INVITE_CONTACT intent 允許一個應用按照使用者意願,邀請一個聯系人進入某個社會網絡的行為。接收程式通過它邀請指定的人加入社會網絡。大部分的應用将會在這個操作的接收端。例如,内置的people應用程式裡,使用者詳細資訊清單上列出了該使用者使用的社交應用,使用者可以通過社交應用上的"添加聯接"按鈕調用 invite intent 連接配接兩個人的社會網絡。

為了讓你的社交應用程式出現在“添加連結”按鈕的清單裡,你的應用必須提供一個同步擴充卡來同步你的社交網絡中的聯系人資訊。你必須通過對你的應用程式的同步配置檔案增加inviteContactActivity屬性 告知系統你的應用回應 INVITE_CONTACT intent 。activity 必須包含一個完全合格的限定名系統才會給其發送invite intent,相關activity 才會檢索意圖響應的資料,邀請相關的人加入社會網絡或者與手機使用者建立連接配接。

Large photos

android現在支援高分辨率的聯系人照片,當你将一個照片放到聯系人記錄中的時候,系統會把它處理成96x96的縮略圖(像之前那樣),和一個256x256 檔案形式的的顯示圖檔(該系統選擇的确切尺寸,在未來可能會有所不同)。你能夠為聯系人添加一個大的照片在PHOTO列,系統會再加工成相應的縮略圖顯示照片記錄。

Contact Usage Feedback

新的  ContactsContract.DataUsageFeedback APIs 允許你追蹤使用者使用特定的方法聯系其他人的頻度,例如使用者多久使用每個電話号碼或郵件。此資訊有助于改善與每個人相關聯的每個接觸方法的排名,并提供更好的建議去聯系每個人聯系。

Calendar (月曆) Provider

新的月曆API允許我們讀,增加,編輯和删除存儲在Calendar Provider的月曆、事件與會者,提醒和警示, 各種應用程式和部件可以使用這些API來讀取和修改月曆事件。然而,一些最引人注目的用例的是同步擴充卡能夠通過Calendar Provider同步其他月曆服務的使用者的月曆,能夠一所有的使用者事件提供一個統一的存放位置。例如,GOOGLE月曆事件,是同步的google月曆同步擴充卡,允許這些事件在android内置的月曆軟體中檢視。

Event intent

如果你想要做的是使用者的月曆添加事件,你可以使用"vnd.android.cursor.item/event"類型 的ACTION_INSERT intent 開始在月曆應用程式的活動,建立新的事件。使用的意圖,不需要任何權限并且您可以指定下列額外的事件的詳細資訊:(事件名,事件開始時間,結束時間,地點,描述,等等。)

Voicemail Provider

新的Voicemail Provider允許應用程式添加語音信箱裝置,使目前所有使用者的語音郵件在一個單一的視覺呈現。舉個例子,很有可能,使用者擁有多個語音郵件的來源,如從手機服務供應商和其他VoIP或其他替代的語音服務之一。這些應用可以通過Voicemail Provider APIs添加他們的語音郵箱到該手機中。内置的Phone應用會呈現所有的語音郵箱給使用者一個統一的展示。雖然Phone應用是系統唯一的一個應用能夠讀取所有的語音郵件信箱,但是每個提供語音郵件服務的應用能夠讀他們加到系統中的郵箱(不能讀其他服務的)。

由于現在的API不支援第三方應用程式去讀系統中所有的語音信箱,他們能夠用的api操作是他們提供給使用者的語音郵箱。

Multimedia(多媒體)

Android4.0增加了幾個新的API ,使應用程式能夠與照片,影片,和音樂等媒體互動。

Media Effects

一個新的媒體效果架構,讓您适用于各種圖像和視訊的視覺效果。例如,圖像效果架構讓您可以輕松地修複紅眼,将圖像轉換為灰階,亮度調整,調整飽和度,旋轉圖像,應用魚眼鏡頭的效果,等等。該效果架構執行在GPU上,以獲得最大的性能。

為了最佳效果,效果架構直接應用了OpenGL的紋理,您的應用程式必須有一個有效的OpenGLcontext,才可以使用效果架構的API。應用效果的紋理可以用于位圖,視訊,甚至相機。不過,也有一定的限制,紋理必須滿足:

1、他們必須綁定到一個GL_TEXTURE_2D的紋理圖像

2、他們必須至少包含一個mipmap的級别

Remote control client

新RemoteControlClient允許媒體播放器,使媒體播放器能夠被遠端控制,如裝置鎖定螢幕。媒體播放器還可以使遙控器上的顯示目前正在播放的媒體,如進度資訊和專輯封面的資訊。

Media player

1、加入網絡權限就可以使媒體播放器播放網絡上的音樂。必須不要忘記加上權限。

2、允許你定義播放習慣。

Media types

本次的4.0增加了支援的媒體種類:

1、HTTP / HTTPS的實時流媒體協定第3版

2、ADTS的原料AAC音頻編碼

3、WEBP圖像

4、Matroska的視訊

Camera類

Camera類包括用于(人臉檢測和控制焦距和感光區)的API 。

face detection 人臉檢測

相機的應用程式現在可以提高自己的能力啦。作為一門人臉識别的學科,不僅檢測人臉特征,而且還檢測眼睛和嘴巴。如果你想要使用你的相機來做人臉識别的程式,你必須使用setFaceDetectionListener方法來注冊 Camera.FaceDetectionListener對象。然後,您可以啟動您的camera surface ,并調用startFaceDetection方法開始檢測人臉。

如果你實作了 Camera.FaceDetectionListener接口,當系統檢測到一個或者更多個人臉時,便會向所調用的接口回調onFaceDetection方法,包括一組Camera.Face 對象。

Camera.Face類的執行個體提供有關于人臉識别的各種各樣資訊,其中包括:

1、一個相對與相機目前視野的所指定人臉邊界的矩形框( Rect 對象)。

2、一個1到100之間并用于人臉識别精确度的整數。

每個所檢測到的人臉,會配置設定獨一無二的ID。

當識别到眼睛和嘴巴時,都會生成一個 Point 對象。該對象指定眼睛或者嘴巴的空間位置。

注意:并不是所有裝置都支援人臉識别,你應該先調用getMaxNumDetectedFaces() 方法來保證傳回的值大于0,說明你的裝置是支援該技術的。當然,還有一些裝置可以支援人臉識别,但是不支援眼睛和嘴巴的鑒定,在這種情況下,Camera.Face 對象為空值。

焦距和感光區域

照相機程式現在可以控制焦距和感光的白平衡以及自動曝光。 這兩個功能使用新的Camera.Area類來指定照相所集中和所計算的出來的目前視圖區域。 Camera.Area類的執行個體定義該視圖邊界的矩形區域和面積比重(相對于其他區域,該區域的重要性)。

設定焦距或感光度之前,應首先調用getMaxNumFocusAreas()或getMaxNumMeteringAreas()方法。如果這些傳回零,則該裝置不支援相應的功能。

設定焦距調用setFocusAreas() 方法;設定感光度調用setMeteringAreas()方法;這兩種方法每次會傳回包含所對應焦距或者感光度的Camera.Area 對象清單(List)。 例如,你可以實作一個功能,允許使用者設定通過觸摸一個預覽區域,您再轉化到重點領域Camera.Area對象和要求,重點放在該區域的場景,相機。 在現場的面積變化,在這一領域的重點或曝光将不斷更新。

攝像頭自動對焦

現在,您可以啟用連續自動對焦(CAF)拍照。 為了使你的照相程式調用連續自動對焦功能, 需要傳遞FOCUS_MODE_CONTINUOUS_PICTURE參數到setFocusMode()方法中 。 當準備拍攝照片,調用autoFocus()方法。Camera.AutoFocusCallback對象便立即收到一個回調來訓示是否獲得到了焦點。 接受到回調值後,如果還需要重新自動對焦,則必須調用cancelAutoFocus()方法。

注意:連續自動對焦功能支援視訊拍攝,使用FOCUS_MODE_CONTINUOUS_VIDEO參數。可以參考sdk9版本。

攝像頭的其他功能

在錄制視訊時,您可以調用takePicture()方法儲存照片,同時不中斷視訊的拍攝。 但是,在這樣做之前,你應該調用isVideoSnapshotSupported()方法來以確定硬體是否支援這個功能。

使用setAutoExposureLock()和setAutoWhiteBalanceLock()方法可以鎖定自動曝光和白平衡來防止使用者更改這些屬性。

相機拍攝運作時,可以調用setDisplayOrientation()方法。 在以前的版本中,你隻能在運作之前使用,但現在你可以在任何時候改變方向。

相機廣播意圖

Camera.ACTION_NEW_PICTURE :這表明使用者已經占據了新的照片。 内置的攝像頭應用程式調用此廣播,拍攝照片後,第三方的攝像頭應用程式也應該拍攝照片後播出的這一意圖。

Camera.ACTION_NEW_VIDEO :這表明使用者已經占據了一個新的視訊。 内置攝像頭的應用程式調用此廣播後的視訊記錄和第三方的攝像頭應用程式也應該拍攝視訊後播放這一意圖。

Android Beam (NDEF Push with NFC)

Android的光束是一個新的NFC功能,允許您發送NDEF的郵件從一台裝置到另一台(又稱“NDEF推”的過程)。兩款Android供電裝置支援Android束接近時,資料傳輸啟動(約4厘米),通常與他們的背上撫摸。内部的NDEF消息要共享裝置之間的資料可以包含任何資料,例如,人民應用股的接觸,采用Android的YouTube股份的視訊和浏覽器股網址梁。

采用Android束的裝置之間傳輸資料,您需要建立一個包含您要共享的資訊,而您的活動是NdefMessage前台的NdefMessage。 然後,您必須通過NdefMessage到系統中的兩種方法之一:

1、定義一個單獨的NdefMessage推,而在活動:

setNdefPushMessage()在任何時間設定您要發送的消息。 例如,你可以調用這個方法,并通過您NdefMessageNdefMessage在您的活動onCreate方法。 然後,每當Android的光束與另一個裝置激活活動,而在前台,系統的NdefMessage發送到其他裝置。

2、定義NdefMessage推Android的梁開始的時間:

實施NfcAdapter.CreateNdefMessageCallback ,在實施createNdefMessage方法傳回您要發送的NdefMessage的。 然後通過NfcAdapter.CreateNdefMessageCallback實施setNdefPushMessageCallback

在這種情況下,Android的光束是與另一個裝置激活時,你的活動,而在前台, createNdefMessage來檢索您要NdefMessage的NdefMessage。 這允許您定義NdefMessage隻提供一次Android的光束被啟動,如果郵件的内容可能會有所不同,整個活動的生活。

如果你想運作一些特定的代碼,一旦該系統已成功傳遞NDEF消息到其他裝置,你可以NfcAdapter.OnNdefPushCompleteCallbackNfcAdapter.OnNdefPushCompleteCallback和setNdefPushCompleteCallback。 系統将調用onNdefPushComplete()時,郵件将被傳遞。

在接收裝置上,系統排程NDEF定期NFC标簽以類似的方式推入消息。 該系統調用的意圖ACTION_NDEF_DISCOVERED行動啟動URL或一個MIME類型設定根據第一的活動,你想回應的活動,你可以聲明意圖過濾器的網址或你的應用程式關心的MIME類型。 欲了解更多關于标簽的資訊,排程NFC開發人員指南。

如果你想你NdefMessage NdefMessage攜帶URI,你現在可以用友善的createUri NdefRecord Uri的對象是一個字元串或一個基于構造一個新NdefRecord NdefRecord 。 如果URI是一個特殊的格式,您希望您的應用程式也收到一個Android束事件期間,您應該為您的活動創造的意圖過濾器使用相同的URI方案,以接收傳入的NDEF消息。

為了保證您的應用程式處理傳入的NDEF消息,你也應該通過與您的“Android應用程式記錄NdefMessage NdefMessage,即使其他應用程式過濾器相同的意圖行動。您可以建立一個Android應用程式通過createApplicationRecord,通過它您的應用程式包的名稱。當其他裝置接收的的應用程式記錄和多個應用程式,處理的指定意圖的活動NDEF消息時,系統提供的消息,在應用程式中的活動(基礎上的比對應用程式記錄)如果目标裝置目前還沒有安裝您的應用程式,該系統采用的Andr​​oid應用程式的記錄,推出Android市場和使用者的應用程式以安裝。

如果您的應用程式不使用NFC API來執行NDEF推消息,則Android提供了一個預設的行為:當您的應用程式是在一台裝置在前台和Android的光束被調用另一個Android的供電裝置,其他裝置接收到一個NDEF一個Android應用程式記錄,确定您的應用程式的消息。 如果接收裝置已安裝的應用程式,系統啟動它,如果它不安裝,Android的市場開放,并把使用者帶到您的應用程式,以便安裝它。

你可以閱讀更多有關Android的梁,在其他NFC功能的NFC基礎開發指南。 對于一些示例代碼使用Android束,看到的 Android 束示範。

Wi-Fi Direct

現在,Android的支援Wi - Fi的直接點對點點對點(P2P)Android系統的供電裝置和其他類型的裝置,沒有一個熱點或網際網路連接配接之間的連接配接。 Android架構提供了一套Wi - Fi的P2P的API,允許你去發現和連接配接到其他裝置時,每個裝置的Wi - Fi的直接支援,然後溝通跨越距離遠遠長于藍牙連接配接迅速​​連接配接。

android.net.wifi.p2p ,一個新的軟體包,包含所有的API執行同行等連接配接與Wi - Fi。 你需要與主類是WifiP2pManager ,您可以調用getSystemService(WIFI_P2P_SERVICE)收購。WifiP2pManager包括API,允許您:

1、您P2P連接配接的應用程式通過調用initialize

2、探索通過調用附近的裝置discoverPeers

開始通過調用P2P連接配接connect以及一些其他的接口和類是必要的,如:

WifiP2pManager.ActionListener接口,讓您能夠接收的操作時,如發現同行或連接配接到他們的成功或失敗的回調。

WifiP2pManager.PeerListListener界面,您可以收到有關發現同行的資訊。 回調提供了一個WifiP2pDeviceList ,您可以從中檢索一個WifiP2pDevice範圍内的每個裝置對象和擷取資訊,如裝置的名稱,位址,裝置類型,裝置支援的WPS配置。

WifiP2pManager.GroupInfoListener界面,您可以收到一個P2P組資訊。 回調提供了一個WifiP2pGroup對象,它提供了所有者,網絡名稱和密碼的資訊,如組。

WifiP2pManager.ConnectionInfoListener界面,您可以得到目前連接配接的資訊。 回調提供了一個WifiP2pInfo對象,它具有資訊,如一個組是否已經形成,誰是該組的所有者。

為了使用的Wi - Fi P2P的API,你的應用程式必須要求以下使用者權限:

1、ACCESS_WIFI_STATE

2、CHANGE_WIFI_STATE

3、INTERNET (雖然你的應用程式不技術上連接配接到網際網路,溝通的Wi - Fi标準的Java套接字直接同行需要Internet權限)。

Android系統還廣播了幾種不同的行動,在特定的Wi - Fi P2P事件:

1、WIFI_P2P_CONNECTION_CHANGED_ACTION :P2P連接配接狀态發生了變化。 這與EXTRA_WIFI_P2P_INFOWifiP2pInfo與EXTRA_NETWORK_INFO NetworkInfo對象的對象EXTRA_NETWORK_INFO EXTRA_NETWORK_INFOEXTRA_WIFI_P2P_INFO EXTRA_WIFI_P2P_INFO 。

2、WIFI_P2P_STATE_CHANGED_ACTION :P2P的狀态已經改變之間的啟用和禁用。 它攜帶EXTRA_WIFI_STATE要麼WIFI_P2P_STATE_DISABLED或WIFI_P2P_STATE_ENABLED

WIFI_P2P_PEERS_CHANGED_ACTION等裝置的清單已經改變。

3、WIFI_P2P_THIS_DEVICE_CHANGED_ACTION :該裝置的細節已經改變。

見的WifiP2pManager文檔了解更多資訊。 也期待在Wi - Fi的直接示範示例應用程式。

Bluetooth Health Devices

機器人現在支援藍牙的健康概況裝置,使您可以建立使用藍牙醫療裝置,如心率螢幕,血液米,溫度計,和規模,支援藍牙通信的應用。

定期耳機支援A2DP裝置,你必須調用getProfileProxy()BluetoothProfile.ServiceListener和HEALTH的廓型與檔案代理對象建立連接配接。

一旦你獲得健康概況代理( BluetoothHealth對象),成對的醫療裝置的連接配接和溝通包括以下新的藍牙類:

BluetoothHealthCallback :您必須擴充這個類實作回調方法接收應用程式的注冊狀态和藍牙信道狀态的變化更新。

BluetoothHealthAppConfiguration :在您的回調BluetoothHealthCallback ,您會收到此對象的執行個體,它提供了有關可用的藍牙醫療裝置,您必須使用執行各種操作,如啟動和終止連接配接的BluetoothHealth資訊BluetoothHealth的API。

Accessibility

Android的4.0提高為視障使用者新的探索,觸摸模式和擴充API,允許您提供有關視圖内容的更多資訊,或開發先進的輔助功能。

通過觸控模式的新擴充功能

視力減退的使用者現在可以探索通過螢幕觸摸并拖動手指在螢幕上聽到的内容的語音描述。 因為探索,觸摸模式就像一個虛拟的光标工程,它允許螢幕閱讀器,以确定描述性的文字相同的方式,螢幕閱讀器可以軌迹球通過閱讀所提供的資訊,當android:contentDescription :contentDescriptionsetContentDescription後,一個模拟的“懸停”事件。 是以,認為這是一個提醒,你應該提供的意見,在您的應用程式的描述性文字,特别ImageButton的EditText EditText ImageView ImageView的和其他部件,可能不是自然包含說明性文字。

視圖的輔助

面向有障礙的人群的新功能

其他輔助功能的API

拼寫檢查服務

一個新的拼寫檢查架構,允許應用程式用類似于輸入法架構的方法來建立拼寫檢查。建立一個拼寫檢查,你必須實作一個繼承自SpellCheckerService類和SpellCheckerService.Session類的服務,以便接口回調方法來提供基于文本的拼寫檢查。在SpellCheckerService.Session的回調方法裡面,你必須傳回拼寫建議的SuggestionsInfo對象

一個拼寫檢查服務的應用,必須聲明服務所需的BIND_TEXT_SERVICE權限。服務也必須聲明一個intent-filter,它的action屬性為<action android:name="android.service.textservice.SpellCheckerService" />,

并且應該包含一個<meta-data>元素,來聲明拼寫檢查的配置資訊。

語音朗讀引擎(TTS)

android的TTS已經顯著的擴大了,它允許應用程式非常簡便的實作自定義TTS,當應用程式在選在TTS引擎時,想要使用幾個包含新的API的TTS引擎。

使用TTS引擎

在Android以前的版本裡面,使用系統提供的TTS引擎,你應該使用TextToSpeech類,來執行TTS操作,或者你用setEngineByPackageName()方法來自定義一個引擎。在Android4.0,setEngineByPackageName()方法已經過時了,現在你可以通過一個新的TextToSpeeck的構造方法來指定引擎,該方法接收一個TTS引擎的包名。

你還可以通過getEngines()來查詢可用的TTS引擎,這個方法傳回一個TextToSpeech.EngineInfo對象的集合,改對象包含引擎的圖示、标簽和包名等資訊。

建立TTS引擎

在以前,自定義引擎的要求是引擎得使用一個無證本地頭檔案,在Android4.0,有一套完整的API架構來建立TTS引擎。

一個基本的設定要求是需要一個響應了INTENT_ACTION_TTS_SERVICE意圖的TextToSpeeckService的實作,一個TTS引擎的主要工作發生在一個繼承TextToSpeechService的service的onSynthesizeText()回調裡面,系統給這個方法提供了兩個對象:

SynthesisRequest:它包含多種資料,包括合成的文字,環境,語速和語調

SynthesisRequest:這是一個你的TTS引擎提供了音頻流的接口。首先,引擎必須調用start()方法,來表明已經準備好提供音頻資料,然後,調用audioAvailable()方法,傳遞一個byte buffer的音頻資料。一旦你的引擎通過了所有的音頻,調用done().

現在,改架構支援一個真正建立TTS引擎的API,本地代碼實作的支援已經被删除。查找一篇關于相容層得部落格,你可以把你舊的TTS引擎轉換到新的架構下。

網絡使用

Android4.0使使用者能夠精确地、明顯的看到他們的應用程式正在使用多少網絡資料,應用程式設定允許使用者管理并設定網絡資料的使用權,甚至禁止某個應用使用背景資料。為了避免您的應用程式被禁止通路背景資料,你應該優化政策,更加有效的利用連接配接資料,并且調整您的應用依賴的有效連接配接的類型。

如果你的應用執行很多網絡互動,你應該提供一些設定,允許使用者來控制應用程式資料,例如,多久執行同步資料,是否隻在WIFI環境下執行上傳下載下傳操作,是否使用資料漫遊等等,通過提供這些設定,當使用者處理資料管制時,就不太可能禁用你的應用程式來通路資料,因為他們可以更加精确地控制應用程式的資料使用。如果你提供了preference的activity來設定這些,你應該在它的清單檔案裡面聲明intent-filter,并且action為ACTION_MANAGE_NETWORK_USAGE,例如:

<activity android:name="DataPreferences" android:label="@string/title_preferences">

    <intent-filter>

       <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />

       <category android:name="android.intent.category.DEFAULT" />

    </intent-filter>

</activity>

這個intent-filter向系統表明,這個Activity是來控制應用程式的資料使用的,是以,當使用者在Setting裡面檢查你的應用程式使用了多少資料時,就會顯示一個"View application settings"的按鈕,來啟動你自己的preference activity,這樣使用者就可以更加詳細的指導應用程式所使用的資料了。

還要注意,getBackgroundDataSetting()現在已經被棄用了,它總是傳回true,可以用getActiveNetWorkInfo()來替換。

當你嘗試任何網絡互動時,你應該總是調用getActiveNetWorkInfo()來獲得短期目前網絡資訊NetWorkInfo,并且調用isConnected()放來來檢查裝置是否連接配接,然後,你可以檢查其他連接配接屬性,例如是否漫遊、是否連接配接到WIFI。

RenderScript

新增加了三個特點到RenderScript:

1、離屏渲染到一個幀緩沖對象

2、視圖内渲染

3、RenderScript為每一個架構APIS

Allocation類現在支援一個USAGE_GRAPHICS_RENDER_TARGET記憶體空間,它允許你直接的渲染和當做一個幀緩沖對象來使用。

RSTextureView提供了一個在一個View裡面顯示RenderScript圖形,不像RSSurfaceView,它建立了一個單獨的視窗。這個關鍵的差別允許你做一些事情,例如移動、轉換或者和畫RenderScript圖像一樣,在一個布局裡面的view裡,激活一個RSTextureView。

Script.foEach()方法允許你調用從VM的RenderScript來計算腳本和自動委托給裝置上可用的核心,你不用直接使用這個方法,但是你寫的任何一個計算RenderScript都會有一個forEach()方法,你可以調用它在RenderScript類的反射裡面,

你可以通過一個輸入Allocation給程序來調用forEach()方法的發射,輸出Allocation來寫結果,一個FidldPacker資料結構來使RenderScript獲得更多資訊,隻有其中一個Allocation是必須得,資料機構是可選的。

企業

android4.0擴充了企業應用程式的功能,使其具有以下特點:

VPNService

新的VPNService允許應用程式建構他們自己的VPN,作為一個Service運作。一個VPN服務,建立一個與它自己的位址和路由規則的虛拟網絡接口,并且通過一個檔案描述符執行所有讀寫操作。

要建立一個VPN服務,需要用到VpnService.Builder,它允許你指定網絡位址,DNS伺服器,網絡路由等等,當完成時,你可以通過調用establish()方法建立接口,她傳回一個ParcelFileDescriptor對象。

由于VPN服務可以截取資料包,存在安全隐患。是以,如果你實作VpnService,那麼你的服務必須要求BIND_VPN_SERVICE,來確定隻有系統能綁定它(隻有系統被授權這個權限——應用程式不能要求),然後,使用你的VPN服務,使用者必須在系統設定中手動啟用它。

裝置政策

應用程式管理裝置的限制條件,現在可以禁止相機使用setCameraDisabled()和USES_POLICY_DISABLE_CAMERA屬性。

證書管理

新的KeyChain類提供了允許你導入和通路系統密鑰存儲器中正數的API,證書簡化安裝的用戶端證書(來驗證使用者的身份)和證書頒發機構證書(以驗證伺服器的身份)。如Web浏覽器或電子郵件用戶端應用程式可以通路已安裝的證書來驗證使用者到伺服器。詳見KeyChain的文檔。

裝置傳感器

在Android4.0新加了兩個傳感器類型:

1、TYPE_AMBIENT_TEMPERATURE:一個提供環境(室)溫度(攝氏度)的溫度傳感器 。

2、TYPE_RELATIVE_HUMIDITY:提供以百分比的相對環境(室内)濕度:濕度傳感器。

如果裝置有TYPE_AMBIENT_TEMPERATURE和 TYPE_RELATIVE_HUMIDITY傳感器,你可以用它們來計算露點和絕對濕度。

以前的溫度傳感器,TYPE_TEMPERATURE,已被棄用。您應該使用TYPE_AMBIENT_TEMPERATURE傳感器來代替。

此外,Android的三大綜合傳感器已大大提高,是以他們現在有更低的延遲和平滑輸出 。這些傳感器包括重力感應器(TYPE_GRAVITY),旋轉矢量傳感器(TYPE_ROTATION_VECTOR),和線性加速度傳感器(TYPE_LINEAR_ACCELERATION)。改進的傳感器依靠陀螺儀傳感器,以提高它們的輸出,是以,裝置上出現的傳感器,有一個陀螺儀。Action Bar  工具欄

Action Bar已經更新,提供幾種新的行為。最重要的是,該系統管理Action Bar優美的尺寸和結構在更小的螢幕上運作時為了提供一個最佳的使用者體驗所有螢幕尺寸。例如,當螢幕狹窄(例如,當一個手機在肖像取向),Action Bar的導航标簽出現在一個“堆疊柱形”,直接出現在下面的主要Action Bar。你也可以選擇在一個“Split action bar”,這地方都運作項目在一個獨立的當螢幕底部的螢幕縮小。

Split action bar  分裂工具欄

如果你的功能條包括幾個行動項目,不是所有的人都會融入動作條在一條狹窄的螢幕,是以這個系統會把更多的人進入溢流菜單。然而,機器人4.0允許你使“Split action bar”,使更多的行動項目就會出現在螢幕上在一個獨立的功能條在螢幕的底部。為了使分裂的動作條,加上機器人:uiOptions以“splitActionBarWhenNarrow“要麼你的<應用>标簽或者個人在你<活動>标簽展現檔案。當被激活後,系統會增加一個額外的功能條螢幕底下的所有行動項目時,螢幕窄(沒有行動項目将出現在主要的動作條)。

如果你想使用這個導航标簽ActionBar提供的。标簽的api,但不需要的主要動作條上(你想隻有連結出現在頂端),然後使分裂的動作條如上所述,也稱setDisplayShowHomeEnabled(錯誤的)禁用應用程式的圖示的動作條。一無所功能條中的主要行為,它是唯一的disappears-all導航标簽在頂部和行動項目在螢幕的底部。

Action bar styles功能樣式

如果你想要申請習慣的功能條上的造型,你可以用新的風格和性能backgroundStacked backgroundSplit應用背景或顔色堆疊柱形和Split action bar。你也可以将這些風格與setStackedBackgroundDrawable在運作時()和setSplitBackgroundDrawable()。

Action provider  功能提供

新ActionProvider類允許你建立一個專門處理運作項目。一個行動Action provider可以定義一個行動的觀點,一個預設的動作行為,與每項行動子菜單,它是互相關聯的。當你想創造一個行動項目時,動态的行為(比如一個變量作用的觀點,預設的行動,或者子菜單),延長ActionProvider是個好辦法,以創造一個可用的元件,而不是處理各項行動項目或活動轉換你的碎片。

例如,ShareActionProvider的延伸,是ActionProvider行動使“分享”的動作條。而不是用傳統項目,調用ACTION_SEND意圖,你可以使用這一功能有一個行動提供了一個下拉清單的觀點與應用程式處理ACTION_SEND意圖。當使用者選擇一個應用程式使用的功能,ShareActionProvider要選擇和行動提供更快的存取到應用當中。

要聲明一個行動提供一項功能,包括android:actionProviderClass屬性在<item>元素為你的活動中的選項菜單,類名的功能提供更有價值的。例如:

Java代碼:

<item android:id="@+id/menu_share"      android:title="Share"      android:showAsAction="ifRoom"      android:actionProviderClass="android.widget.ShareActionProvider" />

你的onCreateOptionsMenu()回收方法在活動中,搜尋一個執行個體,在菜單功能中提供設定的意圖:

Java代碼:

public boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.options, menu);    ShareActionProvider shareActionProvider =          (ShareActionProvider) menu.findItem(R.id.menu_share).getActionProvider();    // Set the share intent of the share action provider.    shareActionProvider.setShareIntent(createShareIntent());    ...    return super.onCreateOptionsMenu(menu);

}

利用ShareActionProvider為例,看ApiDemos ActionBarActionProviderActivity。

Collapsible action views可分解的功能視圖

看步驟時,提供一個意圖反應觀點去綁定他們的行動視圖狀态和傳統項功能的國家。在此之前,隻有SearchView崩潰的時候才支援作為行動的觀點,但是現在你可以添加一個行動看任何行動項目和擴充狀态之間切換(動作片的觀點是可見的)和倒塌的狀态(行動項目是可見)。

聲明一個行動項目,包含一個反應觀點是折疊的,包括“collapse Action View“标記,android:show As Action屬性為<item>元素在菜單的XML檔案。當一個行動受到意圖開關的擴充和崩潰的時候,注冊的一個執行個體Menu Item。On Action Expand Listener有關

MenuItem通過電話set On Action Expand Listener。 通常,你會這樣做在on Create Options Menu回收。

控制濕陷性行為的觀點,你可以叫collapse Action View和expand Action View分别Menu Item。

當建立一個定制的行動的觀點,你也可以執行新的Collapsible Action View接口調用時接受這種意圖正在擴大并崩潰。

Other APIs for action bar其它api為功能條

•setHomeButtonEnabled()是你指定的圖示/标志 表現這個按鈕來駕船回家或“上”(通過“真”使它像一個按鈕)。

setLogo和setIcon(),允許你可以自定義動作條的圖示或标志的運作時間。

•Fragment.setMenuVisibility()讓你啟用或禁用的可見性的選項菜單項公告的碎片。這是有益的,如果碎片被添加到活動,但不可見的,是以應該被隐藏的菜單項。

•FragmentManager.invalidateOptionsMenu()讓你解除本活動在不同的菜單的生命周期中碎片從活動采用等效方法可能得到的。

User Interface and Views使用者界面和觀點

介紹android 4.0各種新觀點和其它UI元件。

GridLayout網格布局

GridLayout 是一個新的視角地方子視圖在一個矩形網格。不像TableLayout,GridLayout依靠扁平式,不用中間觀點,如表行提供結構。相反,我們指定哪些行(s)和列(s)他們應該占據(單元可以跨越多行和/或列),在預設情況下,是奠定在網格順序的行和列。GridLayout取向決定是否連續的預設了孩子水準或垂直。間隔空間的我們可能被指定或者通過,使用新的空間景觀執行個體或設定相應的參數對我們。

看到ApiDemos為案例,使用GridLayout。

TextureView結構視圖

TextureView是一個全新的視角,允許你來顯示内容流,比如視訊或一個開放式繪圖介面現場。雖然SurfaceView相似,TextureView是獨特的,因為它表現得像一個普通的觀點,而不是創造另一個視窗,是以你可以把它像其他視圖對象。例如,你可以申請轉變,有生命的,它使用ViewPropertyAnimator,或調整其混濁setAlpha()。

你要慎重,TextureView隻是在一個硬體加速的視窗。

Switch widget開關視窗

你可以用android:textOn 和 android:textOff屬性指明文字出現在交換機在斷斷續續的設定。機器人:文本屬性也允許你方标簽和開關。

一個案例為使用開關,看到開關。xml檔案和相關布局開關的活動。

Popup menus彈出菜單

介紹了Android的PopupMenu 3.0創造短語境菜單彈出一個錨點你指定(通常為重點項目的選擇)。Android 4.0擴充PopupMenu和兩個有用的特點:

你現在可以很容易從XML的彈出菜單,菜單資源與充氣(),通過菜單資源ID。

你也可以建立一個PopupMenu。接收一個回調函數OnDismissListener當菜單登出。

Preferences選擇權

一個新的TwoStatePreference抽象類作為依據,提供“偏好選擇選項。新SwitchPreference是一個擴充,提供了一種TwoStatePreference開關視窗的觀點,允許使用者偏好設定打開或關閉開關,不需要開一個額外的偏好螢幕或對話框。例如,設定應用程式使用一個SwitchPreference及藍牙無線網絡的設定。

System themes系統主題

對所有應用都預設主題的目标android4.0(通過設定或者targetSdkVersion或minSdkVersion“14 "或更高版本)現在是“裝置預設為“主題:Theme.DeviceDefault。 這或許是最黑暗的Holo主題或者一個不同的黑暗主題的具體規定裝置。

這個主題是保證不改變到另一個裝置運作相同的版本的android。如果你明确适用于任何的主題。你的主題活動,是可以放心,這些主題将不會改變角色在不同的裝置在同一平台版本。

如果你希望你的應用程式融入整個裝置的主題(如當不同的原始裝置制造商提供不同的預設主題為系統),你應該明确适用的主題從這個主題。DeviceDefault。

Options menu button選項菜單按鈕

從android4.0,你會發現手機硬體不再需要一個菜單按鈕。然而,你不需要去擔心這個,如果你現有的應用程式提供了一個選項菜單并且希望會有一個菜單按鈕。確定現有的程式繼續,該系統提供了一個在螢幕上的菜單按鈕的程式被設計為舊版的android。

最好的使用者體驗,新的和更新程式應該使用ActionBar提供菜單項和設定targetSdkVersion“14 "利用最新的架構預設的行為。

Controls for system UI visibility控制系統使用者界面

從早期的Android,系統已經成功一個UI元件稱為狀态欄,蘊藏在頂部手機裝置傳輸資訊如載波信号、時間、通知,等等。Android系統,3.0增加的裝置,制度在螢幕的底部提供系統導航的控制(家,回來,等等),又一個接口用于傳統的元素提供狀态欄。在Android 4.0,該系統提供了一種新型的系統界面稱為導航欄。你可能會考慮導航欄一個re-tuned版本的系統設計handsets-it容器提供導航的控制裝置不需要硬體同行操縱系統,但它留下了系統使用者界面和酒吧的通知設定控制。這樣,一種裝置,它提供了導航欄也有狀态欄在頂部。

直到今天,您可以隐藏狀态欄上使用手機FLAG_FULLSCREEN标志。在Android 4.0,控制系統api容器的知名度已經被更新,以便更好地反映了對系統行為的容器和導航欄。

SYSTEM_UI_FLAG_LOW_PROFILE标記取代了行STATUS_BAR_HIDDEN标志。 當設定時,這個标志使“低調”模式為系統的容器或導航欄。導航按鈕暗淡,其他元素酒吧也隐藏系統。使這是有益的創造更多的引人入勝的遊戲系統按鈕。

SYSTEM_UI_FLAG_VISIBLE标記取代了行STATUS_BAR_VISIBLE标記,要求系統容器或導航欄可見。

SYSTEM_UI_FLAG_HIDE_NAVIGATION行是一種新的标記要求導航欄隐藏完全。 注意,這隻是工作為導航欄采用手機(不隐藏系統容器)。導航欄盡快傳回檢視系統接收使用者輸入的資訊。是以,該模式是有用的主要是為視訊回放或其他案件中,整個螢幕是需要的,但使用者輸入并不是必須的。

您可以設定每一個這樣的标志和導航欄系統調用setSystemUiVisibility()在任何觀點在你的活動。視窗管理器(OR-together)結合标記從所有的觀點在你的視窗并把它們應用到系統界面隻要你的視窗有輸入焦點。當你失去視窗輸入焦點(使用者導航,你的應用程式,或者出現一個對話框),你的标記停止生效。同樣的,如果你把那些觀點從視圖層次中他們的标記不再适用。

其他事件同步活動改變系統能見度UI(例如,隐藏的動作條或其他使用者界面控制該系統界面隐藏),你應該登記的景色。OnSystemUiVisibilityChangeListener時要通知知名度的系統導航欄欄或改變。

看到OverscanActivity示範不同的系統使用者界面選項。

輸入架構

Android 4.0增加了對光标懸停事件、手寫筆、滑鼠按鈕事件的支援。

懸停事件

View類現在支援“懸停”事件,通過對指針裝置(如滑鼠或其他裝置驅動螢幕上的光标)支援,使得其使用者互動更加豐富。

為了接收控件上的懸停事件,需要實作View.OnHoverListener,并通過setOnHoverListener() 進行注冊。當懸停事件觸發時,您的監聽器onHover()就會被調用, 參數中含有觸發懸停的View和懸停事件MotionEvent。 懸停事件可以是下列操作之一:

ACTION_HOVER_ENTER

ACTION_HOVER_EXIT

ACTION_HOVER_MOVE

如果你在View.OnHoverListener中 onHover()處理了此事件,則應該傳回真。 如果傳回false,則懸停事件将被繼續分派到它的父視圖中。

如果你的應用程式使用到了随着狀态改變外觀的控件,如按鈕或其他控件。那麼恭喜你,現在可以通過android:state_hovered 和state_hovered屬性狀态清單提供不同的背景繪制來響應懸停事件。

SDK中提供了對于懸停事件的示範,請參看ApiDemos工程中的Hover類。

手寫筆和滑鼠按鈕事件

Android現在提供新的APIs,用于接收來自手寫裝置的輸入,如數字化儀平闆電腦周邊裝置或啟用手寫觸摸屏的輸入。

手寫輸入,可以模拟觸摸和滑鼠的輸入。當手寫筆在接觸數字化儀上面移動時,應用程式就可以接收到觸摸事件,這和用手指觸摸顯示屏效果是一樣的。 當手寫筆是懸停在數字化儀之上,應用程式接收到懸停事件,這和滑鼠觸發的懸停事件效果是一樣的。

通過MotionEvent 中的 getToolType()可以得到每一個指針裝置中的“工具類型“,您的應用程式可以以此區分手指,滑鼠,手寫筆和擦出動作。目前定義的工具類型:TOOL_TYPE_UNKNOWN 、 TOOL_TYPE_FINGER、TOOL_TYPE_MOUSE 、TOOL_TYPE_STYLUS 、TOOL_TYPE_ERASER 。通過查詢工具類型,您的應用程式可以根據從手指或滑鼠輸入不同的方式來分别處理輸入。

你也可以通過MotionEvent中的getButtonState()方法,來查詢滑鼠或者按鈕的狀态。目前定義的

按鈕狀态是:

BUTTON_PRIMARY  

BUTTON_SECONDARY  

BUTTON_TERTIARY   

BUTTON_BACKBU  

BUTTON_FORWARD

為了友善起見,後面滑鼠按鈕被自動映射到KEYCODE_BACKKEYCODE_FORWARD鍵,應用程式可以處理這些按鍵,支援滑鼠按鈕的基礎和前進導航。

此外,一些手寫輸入裝置也可以提供筆尖和數字化儀的距離,手寫筆的傾斜角度,手寫筆的方向角,使我們能夠得到更精确的位置和接觸壓力。 您可以通過向getAxisValue()輸入AXIS_DISTANCE , AXIS_TILT ,和AXIS_ORIENTATION 幾個Axis Codes來查詢這些資訊。

SDK提供了工具類型、按鈕狀态和 Axis Codes使用的示範,請參看ApiDemos工程中的TouchPaint類。

Properties

新的Property類提供了一個快速,高效和簡單的方式來對任何對象指定一個屬性,調用者可以通過它來完成設定/擷取該對象的值。同時,也允許來傳遞字段/方法引用的功能,并允許通過代碼來擷取字段/方法的值,即使我們不知道字段/方法的一些具體的資訊。

比如,如果你想設定foo對象的bar字段的值,你以前需要這樣來寫:

                foo.bar = value;

如果你想調用foo對象中的私有字段bar,你以前需要這樣來寫:

                foo.setBar(value);

然而,如果你想傳遞foo執行個體和通過其它的代碼來設定bar字段的值,在android sdk4.0以前是沒法做到的。

使用Property類,你可以在Foo類中定義一個Property對象BAR,這樣你就可以通過Foo類中的foo執行個體來設定它的值,如下:

        BAR.set(foo, value);

是以現在View類就可以充分利用Property類來讓我們可以設定一些字段。比如在android 3.0時加入到View中的轉換的屬性(ROTATION, ROTATION_X, TRANSLATION_X等等)

ObjectAnimator類也可以使用Property 類,你可以用Property來建立一個ObjectAnimator ,它會更快,更高效,比基于字元串的方法更據有類型安全性。

Hardware Acceleration硬體加速

從android 4.0開始,所有的視窗都會預設開啟硬體加速。當然,我們的程式中得把targetSdkVersion 和 minSdkVersion這兩個值設定成14或者更高。通過硬體加速可以使使用者體驗到動畫更流暢,滾動時再流暢,也會提高程式的整體的性能.

如果有必要,使用者可以手動禁止硬體加速。在AndroidManifest檔案中可以利用 hardwareAccelerated  屬性來對個别個的<activity>元素或者<application>元素禁止硬體加速。使用者也可以在代碼中對個别的View進行禁止硬體加速,如:

        setLayerType(LAYER_TYPE_SOFTWARE).

更多關于硬體加速的資訊,包括不支援的繪圖操作清單,可以檢視Hardware Acceleration 文檔

JNI的變化 

在android以前的版本中,JNI本地的引用不是間接的句柄;android 利用的是直接的指針。在垃圾收集器沒有移動對象之前,這不是一個問題. 但是好像能工作是因為可能已經寫了一些存在bug的代碼.

JNI本地引用的詳細資訊(裡裡外外)都寫在了JIN 提示的Local and Global References中。在android 4.0中,CheckJNI已經被增強,以便用來檢測這些錯誤。請關注android開發者的部落格,來了解一般的JNI引用的錯誤和怎麼樣解決他們。

關于JNI的這些改變隻是影響那些目标是android 4.0以上的程式,也就是說 targetSdkVersion 和 minSdkVersion等于14或者更高的程式 .如果你設定的值比14低,那麼JNI的本地引用還是和以前一樣.

WebKit浏覽器引擎

1、WebKit更新到534.30版本

2、在WebView和内置的浏覽器中支援印度的字型(梵文,孟加拉語,泰米爾語,需要通過複雜的字形來組合的字元)

3、在WebView和内置的浏覽器中支援埃塞俄比亞語,格魯吉亞語,亞美尼亞語的字型。

4、支援WebDriver,通過它可以使得利用WebView來測試程式更加的容易

Android 浏覽器

浏覽器程式添加了下面的一些特征來支援web程式。

更新了V8 javaScript編譯器,以送出性能。

另外顯著的增強了android 3.0的一些功能

1、在所有的頁面上支援固定位置元素

2、HTML上媒體的捕獲

3、裝置方向事件

4、css中3d的轉換

Permissions權限

下面是新添加的權限

1、ADD_VOICEMAIL:允許語音信箱服務來添加一個語音郵件到裝置 

2、BIND_TEXT_SERVICE:實作了SpellCheckerService 服務的服務必須添加這個權限

3、BIND_VPN_SERVICE:實作了VpnService 服務的服務必須添加這個權限

4、READ_PROFILE: 提供一個讀權限給 ContactsContract.Profile提供器

5、WRITE_PROFILE: 提供一個寫權限給 ContactsContract.Profile提供器

Device Features裝置特征

下面是新添加的裝置特征

1、FEATURE_WIFI_DIRECT: 聲明些應用程式WIFI來進行點對點和通信

2、對于在android 4.0(api 級别14)上所有的api的變化,請看API Differences Report文檔除了上面講到的API,Android4.0還支援之前釋出的所有API。因為Android3.X平台隻支援大螢幕的裝置,如果你主要為手持裝置進行開發,你不需要擔心目前版本增加的所有API。

現在我們看一下你可能會忽略掉的一些值得注意的地方,現在它們在手持裝置上也可以使用了。

Android3.0

1、Fragment:一個架構元件,允許你将activity中不同的元素分離到自包含的子產品中,每個子產品定義自己的UI和生命周期。詳情請看Fragments。

2、Action Bar:activity中的傳統的标題欄的一個替代品。左側包含一個應用logo,并且為菜單項提供了新接口。詳情請看Action Bar。

3、Loader:一個架構元件,友善在組合的UI中異步加載資料,可以動态擷取資料而不用擔心阻塞主線程。詳情請看Loaders。

4、System clipboard:應用可以使用系統的剪貼闆拷貝和粘貼資料(不僅僅是文本内容)。可以剪貼的資料包括:普通文本,一個URL,或者是一個intent。詳情請看Copy and Paste。

5、Drag and drop:在view中内置了一個API集合,可以友善的進行拖拽的開發。詳情請看Drag and Drop。

6、一個全新的靈活的動畫架構,你可以讓任何對象(例如:view,drawable,fragment,object等等)的任何屬性動起來,并且定義動畫的各種屬性,例如:持續時間,補間内容,如何重複等等。新架構使得在Android上開發動畫比以前更簡單。詳情請看Property Animation。

7、RenderScript graphics and compute engine:RenderScript提供高性能的3D圖檔呈現,和高性能的本地級别的計算API,你可以用C(标準C99)來寫,提供了你希望的從本地環境執行的性能,同時可以跨越各種CPU和GPU。詳情請看RenderScript。

8、Hardware accelerated 2D graphics:你可以為你的應用開啟OpenGL呈現功能,通過在你的manifest檔案的<application>元素中設定{android:hardwareAccelerated=”true”},也可以為每個activity單獨設定。可以使得動畫更加平滑,滾動更加平滑,提高整體性能和使用者的互動響應。

請注意:如果你把應用的minSdkVersion或者是targetSdkVersion設定為14或者更高,硬體加速器是預設開啟的。

Android3.1

1、USB APIs:通過強大的API,可以在應用中整合已經連接配接的外圍裝置。API基于USB和内置在平台的服務,包括對USB宿主和裝置進行互動的支援。詳情請看USB Host and Accessory。

2、MTP/PTP APIs:應用可以和直接連接配接的照相機或者是其他PTP裝置互動,在裝置附加和移除的時候收到通知,管理這些裝置的檔案和存儲,進行檔案和中繼資料的交換。MTP APIs實作了PTP(圖檔傳輸協定),PTP是MTP(媒體傳輸協定)的子集。詳情請看android.mtp。

3、RTP APIs:Android開放了内置的RTP(實時傳輸協定)的API,在應用中可以用來管理實時和互動資料流。尤其是,在提供VOIP的應用,視訊通話,視訊會議,可以用API初始化音頻流的會話,在網絡上傳輸和接受資料流。詳情請看android.net.rtp。

4、支援操縱杆和普通的手勢輸入。

更多詳情請檢視Android 3.1 Platform。

API Level

Android4.0的辨別為14,是系統本身存儲的辨別。這個辨別被我們稱為API等級,幫助系統在安裝應用之前,準确的确定一個應用是否和系統相容,在你的應用中引入Android4.0的API,需要你的代碼在支援API Level14甚至更高的平台編譯通過。如果需要,可以在manifest檔案的<use-sdk>元素中添加 android:minSdkVersion=”14”。

内置的應用

在系統中内置了下面的應用。

  • API的示範
  • Browser浏覽器
  • Calculator電腦
  • Calendar月曆
  • Camera相機
  • Clock時鐘
  • Custom Locale自定義區域
  • Dev Tools開發工具
  • Downloads下載下傳
  • Email電子郵件
  • Gallery畫廊
  • Gestures Builder手勢生成器
  • Messaging消息
  • Music音樂
  • People人民
  • Phone電話
  • Search搜尋
  • Settings設定
  • Speech Recorder語音記錄器
  • Speech Recorder語音記錄器
  • Widget Preview小工具預覽

語言環境

系統映像包含在下載下傳的SDK平台提供的各種内置的語言環境。在某些情況下,特定​​區域的字元串的語言環境。在其他情況下,使用了預設的語言版本。下面列出的Android 3.0系統映像的語言。

阿拉伯,埃及(ar_EG) 

Arabic, Israel (ar_IL)阿拉伯,以色列(ar_IL) 

Bulgarian, Bulgaria (bg_BG)保加利亞,保加利亞(bg_BG) 

Catalan, Spain (ca_ES)加泰羅尼亞,西班牙(ca_ES) 

Czech, Czech Republic (cs_CZ)捷克,捷克共和國(cs_CZ) 

Danish, Denmark(da_DK)丹麥,丹麥(da_DK) 

German, Austria (de_AT)德國,奧地利(de_AT) 

German, Switzerland (de_CH)德國,瑞士(de_CH) 

German, Germany (de_DE)德國,德國(de_DE的) 

German, Liechtenstein (de_LI)德國,列支敦士登(de_LI) 

Greek, Greece (el_GR)希臘,希臘(el_GR) 

English, Australia (en_AU)英國,澳洲(en_AU) 

English, Canada (en_CA)英國,加拿大(en_CA) 

English, Britain (en_GB)英文,英國(en_GB) 

English, Ireland (en_IE)英國,愛爾蘭(en_IE) 

English, India (en_IN)英國,印度(en_IN) 

English, New Zealand (en_NZ)英國,紐西蘭(en_NZ) 

English, Singapore(en_SG)英國,新加坡(en_SG) 

English, US (en_US)英國,美國(en_US) 

English, Zimbabwe (en_ZA)英國,辛巴維(威)(en_ZA) 

Spanish (es_ES)西班牙語(es_ES) 

Spanish, US (es_US)西班牙,美國(es_US) 

Finnish, Finland (fi_FI)芬蘭,芬蘭(fi_FI) 

French, Belgium (fr_BE)法國,比利時(fr_BE) 

French, Canada (fr_CA)法國,加拿大(fr_CA) 

French, Switzerland (fr_CH)法國,瑞士(fr_CH) 

French, France (fr_FR)法國,法國(fr_FR) 

Hebrew, Israel (he_IL)以色列希伯來文,(he_IL) 

Hindi, India (hi_IN)印地語,印度(hi_IN) 

Croatian, Croatia (hr_HR)克羅地亞,克羅地亞(hr_HR) 

Hungarian, Hungary (hu_HU)匈牙利,匈牙利(hu_HU) 

Indonesian, Indonesia (id_ID)印度尼西亞,印度尼西亞(id_ID) 

Italian, Switzerland (it_CH)意大利,瑞士(it_CH) 

Italian, Italy (it_IT)意大利,意大利(it_IT) 

Japanese (ja_JP)日語(ja_JP) 

Korean (ko_KR)南韓(ko_KR) 

Lithuanian, Lithuania (lt_LT)立陶宛,立陶宛(lt_LT) 

Latvian, Latvia (lv_LV)拉脫維亞,拉脫維亞(lv_LV) 

Norwegian bokmål, Norway (nb_NO)挪威巴克摩,挪威(nb_NO) 

Dutch, Belgium (nl_BE)荷蘭,比利時(nl_BE) 

Dutch, Netherlands (nl_NL)荷蘭,荷蘭(nl_NL) 

Polish (pl_PL)波蘭(pl_PL) 

Portuguese, Brazil (pt_BR)葡萄牙,巴西(pt_BR) 

Portuguese, Portugal (pt_PT)葡萄牙,葡萄牙(pt_PT) 

Romanian, Romania (ro_RO)羅馬尼亞,羅馬尼亞(ro_RO) 

Russian (ru_RU)俄羅斯(ru_RU) 

Slovak, Slovakia (sk_SK)斯洛伐克,斯洛伐克(sk_SK) 

Slovenian, Slovenia (sl_SI)斯洛文尼亞,斯洛文尼亞(sl_SI) 

Serbian (sr_RS)塞爾維亞語(sr_RS) 

Swedish, Sweden (sv_SE)瑞典,瑞典(sv_​​SE) 

Thai, Thailand (th_TH)泰國,泰國(th_TH) 

Tagalog, Philippines (tl_PH)他加祿語,菲律賓(tl_PH) 

Turkish, Turkey (tr_TR)土耳其,土耳其(tr_TR) 

Ukrainian, Ukraine (uk_UA)烏克蘭,烏克蘭(uk_UA) 

Vietnamese, Vietnam (vi_VN)越南,越南(vi_VN) 

Chinese, PRC (zh_CN)中國,中國(ZH_CN) 

Chinese, Taiwan (zh_TW)中國,台灣(zh_TW) 

仿真器樣機

下載下傳平台包括以下的仿真器樣機: 

  • QVGA (240x320, low density, small screen) QVGA(240X320,密度低,小螢幕)
  • WQVGA400 (240x400, low density, normal screen) WQVGA400(240X400,密度低,正常螢幕)
  • WQVGA432 (240x432, low density, normal screen) WQVGA432(240x432,密度低,正常螢幕)
  • HVGA (320x480, medium density, normal screen)為HVGA(320x480的,中密度,正常螢幕)
  • WVGA800 (480x800, high density, normal screen) WVGA800(480X800,高密度,正常螢幕)
  • WVGA854 (480x854 high density, normal screen) WVGA854(480X854密度高,正常螢幕)
  • WXGA720 (1280x720, extra-high density, normal screen) new WXGA720(1280 × 720,超高密度,正常螢幕) 新
  • WSVGA (1024x600, medium density, large screen) new WSVGA(1024X600,中密度,大螢幕) 新
  • WXGA (1280x800, medium density, xlarge screen) WXGA(1280 × 800,中密度,XLARGE螢幕)

最新的Andr​​oid裝置模拟器上測試您的應用程式,您可以建立新WXGA720皮膚(這是一個xhdpi,正常的螢幕裝置)的AVD。注意模拟器目前不支援螢幕上的導航欄沒有硬體導航按鈕的裝置新,是以使用該皮膚時,您必須使用“首頁”按鈕的鍵盤按鍵首頁,“後退”按鈕的ESC, F2或頁面為 “菜單”按鈕。 

然而,由于性能問題,在模拟器運作時如WXGA720皮膚的高分辨率螢幕,我們建議您主要使用傳統的WVGA800皮膚(hdpi,正常螢幕),以測試您的應用程式。

轉至:http://www.eoeandroid.com/thread-103300-1-1.html