Android 4.0新特性(中文)

android4.0 SDK發佈有一段時間了,在eoe上找到了翻譯過的新特性說明,特轉載

Android 4.0 平臺 

API等級:14  

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 

除了上面講到的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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章