Android 3.0 API

API 級別: 11

對於開發人員,Android 3.0 平台 (HONEYCOMB) 是 Android SDK 的可下載元件。可下載平台內含一個 Android 程式庫和系統映像檔,以及一組模擬器外觀等項目。可下載的平台不含外部程式庫。

對開發人員來說,Android 3.0 平台是 Android SDK 的可下載元件。可下載的平台內含一個 Android 程式庫和系統映像檔,以及一組模擬器外觀等項目。如要開始針對 Android 3.0 進行開發或測試,請使用 Android SDK Manager 將平台下載至 SDK。

API 總覽

下列各節將概略說明 Android 3.0 為開發人員提供的新功能,包括自先前版本以來的新功能和架構 API 變更。

片段

片段是一種新的架構元件,可讓您將活動的不同元素分割成獨立模組,並定義專屬 UI 和生命週期。如要建立片段,您必須擴充 Fragment 類別,並實作多項生命週期回呼方法,與 Activity 類似。接著,您可以在單一活動中結合多個片段,建構多窗格 UI,讓每個窗格管理自己的生命週期和使用者輸入內容。

您也可以在不提供 UI 的情況下使用片段,並將片段做為活動的工作站使用,例如管理僅在活動執行期間發生的下載進度。

其他規範事項如下:

  • 片段是獨立項目,可以在多個活動中重複使用
  • 您可以在活動中新增、移除、取代片段,以及為片段製作動畫
  • 您可以將片段新增至由活動管理的返回堆疊中,保留片段變更的狀態,讓使用者得以返回不同狀態
  • 提供替代版面配置,即可根據螢幕大小和方向,混合及比對片段
  • 片段可直接存取其容器活動,並可提供項目至活動動作列 (如下所述)

如要管理活動中的片段,您必須使用 FragmentManager,其會提供多個用於與片段互動的 API,例如尋找活動中的片段,以及從返回堆疊中彈出片段,以還原其先前的狀態。

如要執行交易 (例如新增或移除片段),您必須建立 FragmentTransaction。接著,您就可以呼叫 add() remove()replace() 等方法。套用您要針對交易執行的所有變更後,就必須呼叫 commit(),系統會把片段交易套用到活動。

如要進一步瞭解如何使用片段,請參閱片段說明文件。 API 示範應用程式也提供幾個範例。

動作列

動作列會取代活動視窗頂端的傳統標題列。它的左側角落包括應用程式標誌,並為「選項選單」中的項目提供新的介面。此外,動作列還可讓您:

  • 直接在動作列中將選單項目新增為「操作項目」。

    在選單項目的 XML 宣告中加入 android:showAsAction 屬性,並將值設為 "ifRoom"。如果空間足夠,選單項目會直接顯示在動作列中。否則,該項目會放在溢位選單中,並會以動作列右側的選單圖示顯示。

  • 使用小工具 (例如搜尋框) 取代操作項目,請建立「動作檢視畫面」。

    在選單項目的 XML 宣告中,加入含有版面配置資源的 android:actionViewLayout 屬性,或加入含小工具類別名稱的 android:actionViewClass 屬性。(您也必須宣告 android:showAsAction 屬性,讓項目顯示在動作列中)。如果動作列中的空間不足,且項目出現在溢位選單中,就能像一般選單項目一樣,不會顯示小工具。

  • 新增動作至應用程式標誌,並替換為自訂標誌

    應用程式標誌會自動獲派 android.R.id.home ID,輕觸 ID 後,系統就會將 ID 傳送至活動的 onOptionsItemSelected() 回呼。只要在回呼方法中回應這個 ID,即可執行前往應用程式的「首頁」活動等動作。

    如要將圖示替換成標誌,請使用 android:logo 屬性在資訊清單檔案中指定應用程式標誌,然後在活動中呼叫 setDisplayUseLogoEnabled(true)

  • 新增導覽標記,以在片段的返回堆疊中返回
  • 新增分頁或下拉式清單以瀏覽片段
  • 使用主題和背景自訂動作列

動作列適用於所有使用新全像主題的應用程式,當您將 android:minSdkVersionandroid:targetSdkVersion 設為 "11" 時也採用此標準。

如要進一步瞭解動作列,請參閱動作列說明文件。 API 示範應用程式也提供幾個範例。

系統剪貼簿

應用程式現在可以複製及貼上整個系統剪貼簿中的資料,除了文字外,還能複製及貼上資料。裁剪的資料可以是純文字、URI 或意圖。

透過提供系統存取權,讓使用者透過內容供應器複製資料後,使用者即可從您的應用程式複製複雜內容 (例如圖片或資料結構),然後貼到另一個支援該類內容的應用程式中。

如要開始使用剪貼簿,請呼叫 getSystemService(CLIPBOARD_SERVICE) 取得全域 ClipboardManager 物件。

如要將項目複製到剪貼簿,您必須建立新的 ClipData 物件,其中包含一或多個 ClipData.Item 物件,每個物件描述單一實體。如要建立只包含一個 ClipData.ItemClipData 物件,您可以使用任一輔助方法 (例如 newPlainText()newUri()newIntent()),這些方法各會傳回已預先載入您 ClipData.Item 中預先載入的 ClipData 物件。

如要將 ClipData 新增至剪貼簿,請將其傳遞至 ClipboardManager 執行個體的 setPrimaryClip()

接著您可以呼叫 ClipboardManager 上的 getPrimaryClip() 來讀取剪貼簿中的檔案,以便貼上檔案。處理您收到的 ClipData 可能會相當複雜,而且在嘗試貼上資料類型前,您必須確認可以實際處理剪貼簿中的資料類型。

剪貼簿一次只能保留一段裁剪資料 (ClipData 物件),但一個 ClipData 可包含多個 ClipData.Item

詳情請參閱「複製及貼上」說明文件。您還可以看到 API 示範範例的複製及貼上功能的簡易實作方式,以及「筆記板」範例中更完整的實作。

拖曳

新的 API 可簡化應用程式使用者介面中的拖曳作業。拖曳作業是指某類資料從一個位置轉移到 ClipData 物件中的某種資料轉移。拖曳作業的起點和終點為 View,因此直接處理拖曳作業的 API 位於 View 類別。

拖曳作業具有由多種拖曳動作定義的生命週期,每個動作都由 DragEvent 物件定義,例如 ACTION_DRAG_STARTEDACTION_DRAG_ENTEREDACTION_DROP。每個想要參與拖曳作業的檢視畫面都可以監聽這些動作。

如要開始拖曳活動中的內容,請在 View 上呼叫 startDrag(),提供代表要拖曳的資料的 ClipData 物件、可協助使用者拖曳時在手指看到的「陰影」,以及 Object 可將拖曳物件相關資訊與可能接收物件的檢視畫面分享。View.DragShadowBuilder

如要在 View 中接受拖曳物件 (接收「拖放」),請呼叫 setOnDragListener() 以使用 OnDragListener 註冊檢視畫面。當檢視畫面上發生拖曳事件時,系統會針對 OnDragListener 呼叫 onDrag(),這會接收 DragEvent 描述拖曳動作類型 (例如 ACTION_DRAG_STARTEDACTION_DRAG_ENTEREDACTION_DROP)。在拖曳期間,系統會重複對拖曳底下的檢視畫面呼叫 onDrag(),以傳送多個拖曳事件。接收檢視畫面可透過在 DragEvent 上呼叫 getAction() 來查詢傳送至 onDragEvent() 的事件類型。

注意:雖然拖曳事件可能帶有 ClipData 物件,但這與系統剪貼簿無關。拖曳作業一律不應將拖曳的資料放入系統剪貼簿。

詳情請參閱「拖曳」說明文件。您也可以在 API Demos 應用程式和 Honeycomb Gallery 應用程式中查看拖曳功能的實作方式。

應用程式小工具

Android 3.0 支援多種新的小工具類別,可在使用者主畫面上提供更多互動式應用程式小工具,包括:GridViewListViewStackViewViewFlipperAdapterViewFlipper

更重要的是,您可以使用新的 RemoteViewsService 建立含有集合的應用程式小工具,方法是使用由遠端資料備份的 GridViewListViewStackView 等小工具 (例如內容供應器提供)。

AppWidgetProviderInfo 類別 (以 <appwidget-provider> 元素的 XML 定義) 也支援兩個新欄位:autoAdvanceViewIdpreviewImageautoAdvanceViewId 欄位可讓您指定應用程式小工具子檢視畫面的檢視畫面 ID,應由應用程式小工具主機自動推進。previewImage 欄位會指定應用程式小工具外觀的預覽畫面,並可透過小工具挑選器向使用者顯示。如未提供這個欄位,系統會使用應用程式小工具的圖示做為預覽畫面。

為協助您為應用程式小工具建立預覽圖片 (以便在 previewImage 欄位中指定),Android 模擬器會提供名為「小工具預覽」的應用程式。如要建立預覽圖片,請啟動這個應用程式,為應用程式選取應用程式小工具,並設定預覽圖片的顯示方式,然後儲存圖片並放置在應用程式的可繪製資源中。

您可以在 StackView 應用程式小工具天氣清單小工具應用程式中,查看新的應用程式小工具功能的實作內容。

狀態列通知

Notification API 經過擴充,可支援更多內容豐富的狀態列通知,另外還加入了新的 Notification.Builder 類別,可讓您輕鬆建立 Notification 物件。

這些新功能包括:

  • 支援在通知中使用 setLargeIcon() 顯示大型圖示。這通常用於社交應用程式,可顯示通知來源的聯絡人相片,或讓媒體應用程式顯示相簿縮圖。
  • 使用 setTicker(),支援在狀態列提示工具中自訂版面配置。
  • 支援自訂通知版面配置,在顯示具有 PendingIntent 的按鈕時,提供更互動性的通知小工具。例如,通知可以在不啟動活動的情況下控制音樂播放。

內容載入器

新的架構 API 有助於使用 Loader 類別以非同步方式載入資料。您可以將這個 API 與檢視區塊和片段等 UI 元件搭配使用,以動態方式從工作站執行緒載入資料。CursorLoader 子類別經過特別設計,可協助您用於 ContentProvider 支援的資料。

只需實作 LoaderCallbacks 介面,即可在要求新的載入器或資料變更時接收回呼,然後呼叫 initLoader() 來初始化活動或片段的載入器。

詳情請參閱「載入器」說明文件。您也可以在 LoaderCursor LoaderThrottle 範例中,查看使用載入器的範例程式碼。

藍牙 A2DP 和耳機 API

Android 現在提供可讓應用程式驗證已連線藍牙 A2DP 和耳機設定檔裝置狀態的 API。例如,應用程式可識別何時透過藍牙耳機聆聽音樂,並視情況通知使用者。應用程式也可以接收供應商專屬的 AT 指令廣播,並通知使用者連線裝置的狀態,例如連線裝置的電池電量不足時。

如要初始化個別的 BluetoothProfile,請使用 A2DPHEADSET 設定檔常數和 BluetoothProfile.ServiceListener 呼叫 getProfileProxy(),以便在藍牙用戶端連線或中斷連線時接收回呼。

動畫架構

全新的彈性動畫架構可讓您為任何物件 (View、Drawable、Fragment、Object 或其他物件) 的任意屬性建立動畫,可讓您定義動畫的多個面向,例如:

  • 時間長度
  • 重複輸入金額和行為
  • 時間插值類型
  • Animator 會設定讓動畫一起播放、依序或之後播放。
  • 影格重新整理延遲時間

根據預設,您可以為物件的 int、浮點值和十六進位顏色值定義這些動畫元素和其他項目。也就是說,如果物件含有其中一種類型的屬性欄位,您就可以隨時間變更物件的值來影響動畫。如要為任何其他類型的值建立動畫,您可以實作 TypeEvaluator 介面,指示系統如何計算該類型的值。

有兩個動畫器可用來為屬性的值建立動畫:ValueAnimatorObjectAnimatorValueAnimator 會計算動畫值,但不知道使其具有動畫效果的特定物件或屬性。函式只會執行計算,而您必須監聽更新,並使用自己的邏輯處理資料。ObjectAnimatorValueAnimator 的子類別,可用來設定建立動畫的物件和屬性,並處理所有動畫工作。也就是說,您將向 ObjectAnimator 提供要建立動畫的物件、隨時間變更的物件屬性,以及一組要隨著時間套用至屬性的值,然後開始執行動畫。

此外,LayoutTransition 類別會針對活動版面配置的變更,啟用自動轉換動畫。如要為版面配置的一部分啟用轉場功能,請建立 LayoutTransition 物件,並呼叫 setLayoutTransition() 即可在任何 ViewGroup 上設定該物件。如此一來,每當在群組中新增或移除項目時,預設動畫就會執行。如要指定自訂動畫,請在 LayoutTransition 上呼叫 setAnimator() 並提供自訂 Animator,例如上文所述的 ValueAnimatorObjectAnimator

詳情請參閱「屬性動畫」說明文件。您也可以在 API 示範應用程式中查看多個使用動畫 API 的範例。

擴充 UI 架構

  • ListView 和 GridView 的複選選項

    setChoiceMode() 的新 CHOICE_MODE_MULTIPLE_MODAL 模式可讓使用者從 ListViewGridView 中選取多個項目。與動作列搭配使用時,使用者可以選取多個項目,然後從動作列的選項清單中選取要執行的動作 (已轉換成選擇動作模式)。

    如要啟用選擇題,請呼叫 setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL) 並使用 setMultiChoiceModeListener() 註冊 MultiChoiceModeListener

    當使用者長按某個項目時,動作列會切換至多選項動作模式。系統會呼叫 onItemCheckedStateChanged() 來選取項目時通知 MultiChoiceModeListener

    如需選擇題的範例,請參閱 API 示範範例應用程式中的 List15.java 類別。

  • 用於轉換檢視畫面的新 API

    新的 API 可讓您輕鬆將 2D 和 3D 轉換套用至活動版面配置中的檢視畫面。一組定義檢視畫面版面配置位置、方向、透明度等條件的物件屬性,可實現新的轉換。

    設定檢視畫面屬性的新方法包括:setAlpha()setBottom()setLeft()setRight()setBottom()setPivotX()setPivotY()setRotationX()setRotationY()setScaleX()setScaleY()setAlpha() 等。

    部分方法也有對應的 XML 屬性,您可以在版面配置檔案中指定以套用預設轉換。可用的屬性包括:translationXtranslationYrotationrotationXrotationYscaleXscaleYtransformPivotXtransformPivotYalpha

    使用部分新的檢視畫面屬性搭配新的動畫架構 (如前所述),即可輕鬆將一些精美的動畫套用至檢視畫面中。舉例來說,如要以 Y 軸旋轉檢視畫面,請提供 View、「rotationY」屬性以及開始和結束值:ObjectAnimator

    Kotlin

    ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply {
        duration = 2000
        start()
    }
    

    Java

    ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360);
    animator.setDuration(2000);
    animator.start();
    
  • 全新全像主題

    我們重新設計了標準系統小工具和整體外觀,並納入新的「全像」使用者介面主題。系統會使用標準的樣式和主題系統套用新主題。

    根據預設,凡是以 Android 3.0 平台為目標的應用程式 (也就是將 android:minSdkVersionandroid:targetSdkVersion 值設為 "11") 都會沿用全像主題。然而,如果您的應用程式也套用了自己的主題,除非您將樣式更新為沿用全像主題,否則主題將會覆寫全貌主題。

    如要將全像主題套用至個別活動,或是在自己的主題定義中沿用這些主題,請使用多個新的 Theme.Holo 主題。如果您的應用程式與 Android 3.0 以下版本相容,並且套用自訂主題,則您應根據平台版本選取主題

  • 新小工具
    • AdapterViewAnimator

      AdapterView 的基礎類別,會在切換檢視畫面時執行動畫。

    • AdapterViewFlipper

      簡單的 ViewAnimator,在已加入的多個檢視畫面之間建立動畫效果。系統一次只會顯示一個孩童。如有需要,它可以按照固定間隔自動切換每個子項。

    • CalendarView

      允許使用者輕觸日期從日曆中選取日期,並且可將日曆捲動或翻到想查看的日期。您可以設定小工具的可用日期範圍。

    • ListPopupWindow

      將其定位為主機檢視畫面,並顯示選項清單,例如在 EditText 檢視畫面中輸入內容時,顯示建議清單。

    • NumberPicker

      可讓使用者從預先定義的範圍中選取數字。小工具會顯示輸入欄位,以及向上和向下按鈕選取數字。輕觸輸入欄位可讓使用者捲動瀏覽值,或是再次輕觸以直接編輯目前的值。而且可讓您將位置對應至字串,以便顯示對應的字串,而非索引位置。

    • PopupMenu

      在強制回應彈出式視窗 (錨定在檢視畫面) 中顯示 Menu。如果有空間,則彈出式視窗會顯示在錨定檢視畫面下方;如果沒有空間,則會顯示在上方。如果畫面上有 IME (螢幕鍵盤),就在使用者輕觸選單之前,彈出式視窗不會與輸入法編輯器重疊。

    • SearchView

      提供搜尋框,您可以設定搜尋框,將搜尋查詢提供給指定活動並顯示搜尋建議 (做法與傳統搜尋對話方塊相同)。如要在動作列中提供搜尋小工具,這個小工具特別實用。詳情請參閱「建立搜尋介面」。

    • StackView

      此檢視畫面以 3D 堆疊顯示子項,可讓使用者滑動 rolodex 等檢視畫面。

圖像

  • 硬體加速 2D 顯示卡

    您現在可以在資訊清單元素的 <application> 元素或個別 <activity> 元素中設定 android:hardwareAccelerated="true",為應用程式啟用 OpenGL 轉譯器。

    這個標記可以加快應用程式的繪圖速度,讓動畫更流暢、捲動更順暢,整體效能更佳,更能回應使用者互動。

  • 查看硬體和軟體層的支援

    根據預設,View 未指定圖層。您可以使用 setLayerType()layerType 屬性,指定硬體或軟體層支援檢視畫面,並以 LAYER_TYPE_HARDWARELAYER_TYPE_SOFTWARE 值指定。

    硬體圖層採用特定硬體專屬紋理 (通常是 OpenGL 硬體上的「Frame Buffer 物件」或「FBO」),並且使用 Android 硬體轉譯管道算繪檢視畫面,但前提是必須啟用檢視區塊階層的硬體加速功能。關閉硬體加速時,硬體層的行為會與軟體層完全相同。

    軟體層採用點陣圖,因此即使已啟用硬體加速功能,軟體層也會使用 Android 的軟體轉譯管道轉譯檢視畫面。當受影響的檢視區塊樹狀結構經常更新時,應避免使用軟體層。每次更新都需要重新轉譯軟體層,速度可能會很慢。

    詳情請參閱 LAYER_TYPE_HARDWARELAYER_TYPE_SOFTWARE 說明文件。

  • Renderscript 3D 圖形引擎

    Renderscript 是一種執行階段 3D 架構,可提供用於建構 3D 場景的 API,以及與平台無關的特殊著色器語言,可發揮最高效能。使用 Renderscript 可加快圖形作業和資料處理。如要為應用程式、桌布、輪轉介面等項目建立高效能 3D 效果,Renderscript 是理想方法。

    詳情請參閱「使用 Renderscript 進行 3D 轉譯和運算」說明文件。

媒體

  • 縮時錄影影片

    Camcorder API 可支援錄製縮時錄影影片的功能。setCaptureRate() 會設定擷取影格的速率。

  • 圖片串流的紋理支援

    新的 SurfaceTexture 可讓您擷取圖片串流做為 OpenGL ES 紋理。為 Camera 執行個體呼叫 setPreviewTexture(),即可指定從相機繪製影片播放或預覽影格的 SurfaceTexture

  • HTTP 直播

    應用程式現在可以將 M3U 播放清單網址傳遞至媒體架構,啟動 HTTP 直播工作階段。媒體架構支援大部分的 HTTP 直播規格,包括自動調整位元率。詳情請參閱支援的媒體格式文件。

  • EXIF 資料

    ExifInterface 包含相片光圈、ISO 和曝光時間的新欄位。

  • Camcorder 設定檔

    新的 hasProfile() 方法和數個影片品質設定檔 (例如 QUALITY_1080PQUALITY_720PQUALITY_CIF 等) 可讓您決定攝影機品質選項。

  • 數位媒體檔案傳輸

    這個平台內建 USB 媒體/圖片傳輸通訊協定 (MTP/PTP) 支援功能,可讓使用者在裝置之間輕鬆傳輸任何類型的媒體檔案和主機電腦。開發人員可以使用這項支援功能建構應用程式,讓使用者建立或管理他們想要在裝置間轉移或共用的互動式多媒體檔案。

  • 數位版權管理 (DRM)

    用於檢查和強制執行數位權利的全新可擴充數位版權管理 (DRM) 架構。它以兩個架構層實作:

    • 會將 DRM 架構 API 提供給應用程式,並透過 Dalvik VM 執行標準應用程式。
    • 原生程式碼 DRM 管理員會實作架構 API,並公開 DRM 外掛程式的介面,以處理各種 DRM 配置的權利管理和解密作業。

    對於應用程式開發人員,此架構提供抽象的整合式 API,可簡化受保護內容的管理。這個 API 可隱藏 DRM 作業的複雜度,並針對受保護的和未受保護的內容以及各種 DRM 配置提供一致的作業模式。

    對於裝置製造商、內容擁有者和網際網路數位媒體供應商,DRM 架構的外掛程式 API 可讓 Android 系統支援自選的 DRM 配置,以安全執行內容保護。

    預覽版本不提供任何原生 DRM 外掛程式來檢查及強制執行數位權利。不過,裝置製造商可能會將 DRM 外掛程式隨身攜帶。

    您可以在 android.drm 套件中找到所有 DRM API。

鍵盤支援

  • 支援 Control、Meta、Caps Lock、Num Lock 和 Scroll Lock 修飾符。詳情請參閱 META_CTRL_ON 和相關欄位。
  • 支援完整電腦樣式的鍵盤,包括支援 Escape、Home、End、Delete 等按鍵。您可以查詢 getKeyboardType() 並檢查 KeyCharacterMap.FULL,判斷按鍵事件是否來自完整鍵盤
  • TextView 現在支援使用 Control+X、Control+C、Control+V 和 Control+A 按鍵組合,以鍵盤執行剪輯、複製、貼上和全選。也支援 PageUp/PageDown、Home/End 和鍵盤版文字選取功能。
  • KeyEvent 新增了多個方法,方便您以一致且一致的方式檢查金鑰修飾符狀態。請參閱 hasModifiers(int)hasNoModifiers()metaStateHasModifiers()metaStateHasNoModifiers()
  • 應用程式可以將 ActivityDialogView 設為子類別,並實作 onKeyShortcut(),實作自訂鍵盤快速鍵。每當索引鍵與 Control 鍵結合時,架構就會呼叫這個方法。建立選項選單時,您可以設定每個 <item> 元素的 android:alphabeticShortcutandroid:numericShortcut 屬性 (或使用 setShortcut()) 來註冊鍵盤快速鍵。
  • Android 3.0 內含新的「虛擬鍵盤」裝置 (ID 為 KeyCharacterMap.VIRTUAL_KEYBOARD)。虛擬鍵盤擁有電腦樣式的美國按鍵對應配置,適合用來合成重要事件以測試輸入。

分割觸控事件

先前,一次只能讓一個檢視畫面接受觸控事件。Android 3.0 支援跨檢視畫面甚至視窗分割觸控事件,因此不同的檢視畫面可接受同時觸控事件。

如果應用程式指定 Android 3.0 版,系統預設會啟用分割觸控事件。也就是說,當應用程式將 android:minSdkVersionandroid:targetSdkVersion 屬性的值設為 "11" 時。

不過,下列屬性可讓您停用特定檢視區塊群組和視窗之間,跨檢視畫面的分割觸控事件。

  • 檢視區塊群組的 android:splitMotionEvents 屬性可讓您停用在版面配置中子檢視畫面之間發生的分割觸控事件。例如:
    <LinearLayout android:splitMotionEvents="false" ... >
        ...
    </LinearLayout>
    

    如此一來,線性版面配置中的子檢視畫面無法分割觸控事件,一次只有一個檢視畫面可以接收觸控事件。

  • android:windowEnableSplitTouch 樣式屬性可讓您為活動或整個應用程式的主題套用分割觸控事件,藉此停用跨視窗的分割觸控事件。例如:
    <style name="NoSplitMotionEvents" parent="android:Theme.Holo">
        <item name="android:windowEnableSplitTouch">false</item>
        ...
    </style>
    

    這個主題套用至 <activity><application> 時,系統只會接受目前活動視窗中的觸控事件。舉例來說,如果停用跨視窗的分割觸控事件,系統列就無法與活動同時接收觸控事件。這「不會」影響活動內的檢視畫面能否分割觸控事件。根據預設,活動仍可在不同檢視畫面之間分割觸控事件。

    如要進一步瞭解如何建立主題,請參閱「套用樣式和主題」。

WebKit

  • 新增 WebViewFragment 類別,以建立由 WebView 組成的片段。
  • 新的 WebSettings 方法:
  • 新的 WebView 方法:
    • onPause() 回呼:在 WebView 隱藏時暫停任何與 WebView 相關的處理程序。當 WebView 不在前景時,這有助於減少不必要的 CPU 或網路流量。
    • onResume() 回呼,以便繼續處理與 WebView 相關聯的處理,而這項作業已在 onPause() 期間暫停。
    • saveWebArchive() 可讓您將目前的檢視畫面儲存為裝置上的網頁封存。
    • showFindDialog() 會在目前的檢視畫面中啟動文字搜尋。

Browser

「瀏覽器」應用程式新增下列功能以支援網頁應用程式:

  • 媒體擷取

    根據 HTML 媒體擷取規格的定義,瀏覽器允許網頁應用程式存取裝置的音訊、圖片和影片擷取功能。例如,下列 HTML 會提供輸入內容,讓使用者擷取要上傳的相片:

    <input type="file" accept="image/*;capture=camera" />
    

    或者,使用者只要排除 capture=camera 參數,就可以選擇使用相機擷取新圖片,或是從裝置中選取圖片 (例如圖片庫應用程式)。

  • 裝置螢幕方向

    根據裝置方向事件規格的定義,瀏覽器允許網頁應用程式監聽 DOM 事件,藉此提供裝置實體方向和動作的相關資訊。

    裝置螢幕方向是以 x、y 和 z 軸表示,以度數和動作表示,還要以加速和旋轉率資料表示。網頁可以藉由呼叫事件類型 "deviceorientation"window.addEventListener 註冊方向事件,並註冊 "devicemotion" 事件類型來註冊動作事件。

  • CSS 3D 轉換

    根據 CSS 3D 轉換模組規格的定義,瀏覽器允許 CSS 轉譯的元素以三維尺寸進行轉換。

JSON 公用程式

新類別 JsonReaderJsonWriter 可協助您讀取及寫入 JSON 串流。新的 API 可與 org.json 類別相輔相成,在記憶體中操控文件。

如要建立 JsonReader 的執行個體,請呼叫其建構函式方法,並傳遞動態饋給 JSON 字串的 InputStreamReader。接著,透過呼叫 beginObject() 開始讀取物件,使用 nextName() 讀取索引鍵名稱,使用各類型的方法 (例如 nextString()nextInt()) 讀取值,並在 hasNext() 為 true 時繼續執行此操作。

如要建立 JsonWriter 的例項,您可以呼叫其建構函式並傳遞適當的 OutputStreamWriter。接著,使用與讀取器類似的方式編寫 JSON 資料,使用 name() 新增屬性名稱,並使用適當的 value() 方法新增個別值。

這些類別預設為嚴格。每個類別中的 setLenient() 方法會將這些類別設定成更自由,這種寬鬆剖析模式也與 org.json 的預設剖析器相容。

新功能常數

<uses-feature> 資訊清單元素應用來告知外部實體 (例如 Google Play),其中有關應用程式依附的硬體和軟體功能集。在這個版本中,Android 新增下列常數,應用程式可使用此元素宣告:

  • "android.hardware.faketouch"

    宣告時,表示應用程式與提供模擬觸控螢幕 (或更高) 的裝置相容。配備模擬觸控螢幕的裝置會提供使用者輸入系統,可模擬一部分的觸控螢幕功能。例如滑鼠或遙控可驅動螢幕上的遊標,就屬於這類輸入系統。這類輸入系統支援基本觸控事件,例如點選、向上、拖曳。但較複雜的輸入類型 (例如手勢、快速滑過等) 在虛假觸控裝置上可能較難或不可能,而且多點觸控手勢絕對是不可能的。

    如果您的應用程式「不」需要複雜手勢,且您「不想」讓應用程式從具備模擬觸控螢幕的裝置中篩除,應使用 <uses-feature> 元素宣告 "android.hardware.faketouch"。如此一來,您的應用程式就能使用最多的裝置類型,包括僅提供模擬觸控螢幕輸入的裝置。

    所有配備觸控螢幕的裝置也支援 "android.hardware.faketouch",因為觸控螢幕功能是多項虛假觸控功能。因此,除非您確實需要觸控螢幕,否則應新增 <uses-feature> 元素以進行虛假觸控。

新權限

  • "android.permission.BIND_REMOTEVIEWS"

    您必須在 <service> 資訊清單元素中將這項宣告宣告為必要權限,才能導入 RemoteViewsService。舉例來說,當建立使用 RemoteViewsService 填入集合檢視畫面的應用程式小工具時,資訊清單項目看起來可能會像這樣:

    <service android:name=".widget.WidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />
    

全新平台技術

  • 儲存空間
    • 可啟用內建 eMMC 儲存體的 ext4 檔案系統支援。
    • 用於支援 MTP 裝置的 FUSE 檔案系統。
    • USB 主機模式支援鍵盤和 USB 集線器。
    • 支援 MTP/PTP
  • Linux 核心
    • 已升級至 2.6.36
  • Dalvik VM
    • 支援及最佳化 SMP 的新程式碼
    • 改善 JIT 基礎架構
    • 改善垃圾收集器:
      • 針對 SMP 進行調整
      • 支援較大的堆積大小
      • 統一處理點陣圖和位元組緩衝區
  • Dalvik 核心程式庫
    • 更快速、更迅速地導入 NIO (新型 I/O 程式庫)
    • 改善例外狀況訊息
    • 在整個資料中心內,準確地修正

API 差異報表

如需 Android 3.0 (API 級別 11) 所有 API 變更的詳細檢視畫面,請參閱 API 差異報表

API 級別

Android 3.0 平台提供新版架構 API。Android 3.0 API 會獲派一個整數 ID (11),儲存在系統本身中。這個 ID 稱為「API 級別」,可讓系統在安裝應用程式之前正確判斷應用程式是否與系統相容。

如要在應用程式中使用 Android 3.0 中導入的 API,您需要根據 Android 3.0 SDK 平台提供的 Android 程式庫編譯應用程式。視您的需求而定,您可能還需要在應用程式資訊清單中的 <uses-sdk> 元素中加入 android:minSdkVersion="11" 屬性。如果您的應用程式設計為僅在 Android 2.3 及以上版本中執行,宣告這項屬性可避免在舊版平台上安裝應用程式。

詳情請參閱「什麼是 API 級別?」一文。