<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [Android 6.0 API](https://developer.android.com/about/versions/marshmallow/android-6.0.html) ### **本文內容** **API 差異** [API 級別 22 至 23 ?](https://developer.android.com/sdk/api_diff/23/changes.html) Android 6.0 (M) 為用戶和應用開發者提供了新功能。本文旨在介紹其中最值得關注的 API。 #### **著手開發** 要著手開發 Android 6.0 應用,您必須先獲得 Android SDK,然后使用 SDK 管理器下載 Android 6.0 SDK Platform 和系統映像。 #### **更新目標 API 級別** 要進一步優化您的應用在運行 Android 的設備上的性能,請將您的 targetSdkVersion 設置為"23",在 Android 系統映像上安裝您的應用并進行測試,然后發布更新了此變更的應用。 您可以通過在代碼中加入條件,在執行您的 minSdkVersion 不支持的 API 之前檢查系統 API 級別,實現在使用 Android API 的同時仍為舊版本提供支持。要詳細了解如何保持向后兼容性,請閱讀[支持不同平臺版本](https://developer.android.com/training/basics/supporting-devices/platforms.html)。 如需了解有關 API 級別工作方式的詳細信息,請閱讀什么是 API 級別? #### **指紋身份驗證** 此版本提供了一些新的 API,在受支持的設備上,用戶只需掃描其指紋即可完成身份驗證,這些 API 還可與 [Android 密鑰庫系統](https://developer.android.com/training/articles/keystore.html)結合使用。 要通過指紋掃描驗證用戶身份,請獲取新 FingerprintManager 類的實例,并調用 authenticate()方法。您的應用必須運行在帶有指紋傳感器的兼容設備上。您必須在應用中實現指紋身份驗證流的用戶界面,并在 UI 中使用標準 Android 指紋圖標。FingerprintDialog 示例中包含有 Android 指紋圖標 (c_fp_40px.png)。請注意,如果您要開發多個使用指紋身份驗證的應用,每個應用必須獨立驗證用戶的指紋。 要在您的應用中使用此功能,請先在清單中添加 USE_FINGERPRINT 權限。 ~~~ <uses-permission android:name="android.permission.USE_FINGERPRINT" /> ~~~ 要查看指紋身份驗證的應用實現,請參閱[FingerprintDialog 示例](https://developer.android.com/samples/FingerprintDialog/index.html)。要查看有關將這些身份驗證 API 與其他 Android API 結合使用方法的演示,請觀看視頻 Fingerprint API 和 Payment API。 如果您要測試此功能,請執行以下步驟: 1. 如果您尚未安裝 Android SDK 工具 24.3 修訂版,請執行此操作。 2. 轉到 Settings > Security > Fingerprint,然后按照登記說明在模擬器中登記新指紋。 3. 使用模擬器通過以下命令模擬指紋觸摸事件。使用同一命令模擬鎖屏上或應用中的指紋觸摸事件。 ~~~ adb -e emu finger touch <finger_id> ~~~ 在 Windows 上,您可能需要運行帶有 finger touch <finger_id> 參數的 telnet 127.0.0.1 <emulator-id> 命令。 #### **確認憑據** 您的應用可以根據用戶在多久之前最后一次解鎖設備來驗證其身份。此功能讓用戶不必費心記憶應用特定密碼,您也無需實現自己的身份驗證用戶界面。您的應用應當利用此功能并結合實現公鑰或私鑰,以進行用戶身份驗證。 要設置成功驗證用戶身份后可再次使用同一密鑰的超時持續時間,請在設置 KeyGenerator 或 KeyPairGenerator 時調用新增的 setUserAuthenticationValidityDurationSeconds() 方法。 避免過多顯示重新驗證對話框 -- 您的應用應嘗試先使用加密對象,如果超時到期,請使用 createConfirmDeviceCredentialIntent() 方法在您的應用內重新驗證用戶身份。 要查看此功能的應用實現,請參閱 ConfirmCredential 示例。 #### **應用鏈接** 此版本通過提供功能更強大的應用鏈接,增強了 Android 的 intent 系統。您可以利用此功能將應用與您擁有的某個 Web 域關聯。平臺可以根據此關聯確定在處理特定 Web 鏈接時默認使用的應用,跳過提示用戶選擇應用的步驟。要了解如何實現此功能,請參閱處理應用鏈接。 #### **自動備份應用** 現在,系統可以自動為應用執行完整數據備份和恢復。您的應用的目標平臺必須是 Android 6.0(API 級別 23),才能啟用此行為;您無需額外添加任何代碼。如果用戶刪除其 Google 帳戶,其備份數據也會隨之刪除。要了解該功能的工作方式以及配置文件系統備份內容的方法,請參閱配置應用自動備份。 #### **直接共享** ![](https://box.kancloud.cn/ab88949109b4c02681a3012694becef1_266x314.png) 此版本為您提供的一些 API 可讓用戶直觀、快捷地進行共享。現在,您可以定義可在您的應用內啟動特定 Activity 的直接共享目標。這些直接共享目標通過“共享”菜單公開給用戶。此功能讓用戶可以向其他應用內的目標(如聯系人)共享內容。例如,直接共享目標可以啟動另一社交網絡應用中的某個 Activity,讓用戶可以直接向該應用中的某位朋友或某個社區共享內容。 要啟用直接共享目標,您必須定義一個類,用于擴展 ChooserTargetService 類。在清單中聲明您的服務。在該聲明內,指定 BIND_CHOOSER_TARGET_SERVICE 權限和一個使用 SERVICE_INTERFACE 操作的 intent 過濾器。 以下示例展示了如何在清單中聲明 ChooserTargetService。 ~~~ <service android:name=".ChooserTargetService" android:label="@string/service_name" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service> ~~~ 對于您想要向 ChooserTargetService 公開的每個 Activity,請在您的應用清單中為其添加一個名為 "android.service.chooser.chooser_target_service" 的 <meta-data> 元素。 ~~~ <activity android:name=".MyShareActivity” android:label="@string/share_activity_label"> <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ChooserTargetService" /> </activity> ~~~ #### **語音交互** 此版本提供了一個新的語音交互 API,與語音操作一起使用時,可讓您為應用打造對話式語音體驗。調用 isVoiceInteraction() 方法可確定是否是響應語音操作觸發了您的 Activity。如果是這樣,則您的應用可以使用 VoiceInteractor 類請求用戶進行語音確認、從選項列表中進行選擇以及執行其他操作。 大多數語音交互都由用戶語音操作發起。但語音交互 Activity 也可在沒有用戶輸入的情況下啟動。例如,通過語音交互啟動的另一應用也可發送 intent 來啟動語音交互。要確定您的 Activity 是由用戶語音查詢還是另一語音交互應用啟動,請調用 isVoiceInteractionRoot() 方法。如果另一應用啟動了您的 Activity,該方法會返回 false。您的應用可能隨即提示用戶確認其有意執行此操作。 要詳細了解如何實現語音操作,請參閱語音操作開發者網站。 #### **Assist API** 此版本提供了一種讓用戶通過助手程序與應用進行互動的新方式。要使用此功能,用戶必須啟用助手以使用當前上下文。啟用助手后,用戶可通過長按首頁按鈕在任何應用內召喚助手。 您的應用可通過設置 FLAG_SECURE 標記選擇不與助手共享當前上下文。除了平臺傳遞給助手的一組標準信息外,您的應用還可利用新增的 AssistContent 類共享其他信息。 要為助手提供您的應用內的其他上下文,請執行以下步驟: 1. 實現 Application.OnProvideAssistDataListener 接口。 2. 利用 registerOnProvideAssistDataListener() 注冊此偵聽器。 3. 要提供特定于 Activity 的上下文信息,請重寫 onProvideAssistData() 回調和新的 onProvideAssistContent() 回調(可選操作)。 #### **可采用的存儲設備** 使用此版本時,用戶可以采用 SD 卡等外部存儲設備。采用外部存儲設備可加密和格式化設備,使其具有類似內部存儲設備的行為。用戶可以利用此特性在存儲設備之間移動應用及其私有數據。移動應用時,系統會遵守清單中的 android:installLocation 首選項。 請注意,在內部存儲設備與外部存儲設備之間移動應用時,如果您的應用訪問以下 API 或字段,它們返回的文件路徑將會動態變化。強烈建議:在生成文件路徑時,請始終動態調用這些 API。請勿使用硬編碼文件路徑或之前生成的永久性完全限定文件路徑。 * Context 方法: * getFilesDir() * getCacheDir() * getCodeCacheDir() * getDatabasePath() * getDir() * getNoBackupFilesDir() * getFileStreamPath() * getPackageCodePath() * getPackageResourcePath() * ApplicationInfo 字段: * dataDir * sourceDir * nativeLibraryDir * publicSourceDir * splitSourceDirs * splitPublicSourceDirs 要調試此功能,您可以將一個 USB 驅動器通過一根 USB On-The-Go (OTG) 電纜連接到 Android 設備并運行以下命令啟用該 USB 驅動器: ~~~ $ adb shell sm set-force-adoptable true ~~~ #### **通知** 此版本針對通知功能引入了下列 API 變更: * 新增了 INTERRUPTION_FILTER_ALARMS 過濾級別,它對應于新增的“僅鬧鈴”免打擾模式。 * 新增了 CATEGORY_REMINDER 類別值,用于區分用戶安排的提醒與其他事件 (CATEGORY_EVENT) 和鬧鈴 (CATEGORY_ALARM)。 * 新增了 Icon 類,您可以通過 setSmallIcon()方法和 setLargeIcon()方法將其附加到通知上。同理,addAction() 方法現在接受 Icon 對象,而不接受可繪制資源 ID。 * 新增了 getActiveNotifications() 方法,讓您的應用能夠了解哪些通知目前處于活動狀態。要查看使用此功能的應用實現,請參閱 ActiveNotifications 示例。 #### **藍牙觸控筆支持** 此版本改善了對用戶使用藍牙觸控筆進行輸入的支持。用戶可將兼容的藍牙觸控筆與其手機或平板電腦配對并建立連接。連接后,來自觸摸屏的位置信息將與來自觸控筆的壓力和按鍵信息融合,從而實現比單純使用觸摸屏更豐富的表達。您的應用可以通過在 Activity 中注冊 View.OnContextClickListener 對象和 GestureDetector.OnContextClickListener 對象,偵聽觸控筆按鍵動作并執行輔助操作。 可使用 MotionEvent 方法和常量來檢測觸控筆按鍵交互: * 如果用戶使用帶按鍵的觸控筆觸按應用屏幕,getTooltype() 方法會返回 TOOL_TYPE_STYLUS。 * 對于以 Android 6.0(API 級別 23)為目標平臺的應用,當用戶按觸控筆的主按鍵時,getButtonState() 方法會返回 BUTTON_STYLUS_PRIMARY。如果觸控筆有輔助按鍵,當用戶按下它時,該方法會返回 BUTTON_STYLUS_SECONDARY。如果用戶同時按下兩個按鍵,該方法會同時返回通過 OR 運算符連接起來的兩個值 (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY)。 * 對于以較低平臺版本為目標的應用,getButtonState() 方法返回 BUTTON_SECONDARY(按下觸控筆主按鍵時)、BUTTON_TERTIARY(按下觸控筆輔助按鍵時)之一或同時返回這兩者。 #### **改進的藍牙低功耗掃描** 如果您的應用執行藍牙低功耗掃描,可以使用新增的 setCallbackType() 方法指定您只希望在下列條件下通知回調:首次找到與設置的 ScanFilter 匹配的播發數據包,或者已過很長時間后才再次看到該數據包。這種掃描方法與舊平臺版本中提供的方法相比更加節能。 #### **Hotspot 2.0 第 1 版支持** 此版本在 Nexus 6 和 Nexus 9 設備上添加了對 Hotspot 2.0 第 1 版規范的支持。要在您的應用中配置 Hotspot 2.0 憑據,請使用 WifiEnterpriseConfig 類的新方法,如 setPlmn() 方法和 setRealm() 方法。在 WifiConfiguration 對象中,您可以設置 FQDN 字段和 providerFriendlyName 字段。新增的 isPasspointNetwork() 方法可指示檢測到的網絡是否為 Hotspot 2.0 接入點。 #### **4K 顯示模式** 現在,平臺允許應用在兼容硬件上請求將顯示分辨率升級到 4K 渲染。要查詢當前物理分辨率,請使用新增的 Display.Mode API。請注意,如果 UI 是以較低邏輯分辨率繪制并通過放大達到更高的物理分辨率,則 getPhysicalWidth() 方法返回的物理分辨率可能不同于 getSize() 所報告的邏輯分辨率。 您可以通過設置應用窗口的 preferredDisplayModeId 屬性請求系統更改應用運行時的物理分辨率。如果您想切換到 4K 顯示分辨率,此功能會很有幫助。在 4K 顯示模式下,UI 仍然以原始分辨率(如 1080p)渲染,通過放大達到 4K,但 SurfaceView 對象可能會以原生分辨率顯示內容。 #### **主題化 ColorStateList** 對于運行 Android 6.0(API 級別 23)的設備,現在支持在 ColorStateList 中使用主題屬性。Resources.getColorStateList() 方法和 Resources.getColor() 方法已棄用。如果您要調用這些 API,請改為調用新增的 Context.getColorStateList() 方法或 Context.getColor() 方法。還可在 v4 appcompat 庫中通過 ContextCompat 使用這些方法。 #### **音頻功能** 此版本增強了 Android 上的音頻處理功能,包括: * 通過新增的 android.media.midi API 提供了對 MIDI 協議的支持。使用這些 API 可發送和接收 MIDI 事件。 * 新增了 AudioRecord.Builder 類和 AudioTrack.Builder 類,分別用于創建數字音頻采集和回放對象,還可用于配置音頻源和接收器屬性來替換系統默認值。 * 用于關聯音頻和輸入設備的 API 鉤子。如果您的應用允許用戶通過與 Android TV 相連的游戲控制器或遙控器啟動語音搜索,此功能尤為有用。系統會在用戶啟動搜索時調用新增的 onSearchRequested() 回調。要確定用戶的輸入設備是否內置麥克風,請從該回調檢索 InputDevice 對象,然后調用新的 hasMicrophone() 方法。 * 新增了 getDevices() 方法,讓您可以檢索系統當前連接的所有音頻設備的列表。如果您想讓系統在音頻設備連接或斷開時通知應用,還可以注冊一個 AudioDeviceCallback 對象。 #### **視頻功能** 此版本為視頻處理 API 添加了新功能,包括: * 新增了 MediaSync 類,可幫助應用同步渲染音頻流和視頻流。音頻緩沖區以非鎖定方式提交,并通過回調返回。此外,它還支持動態回放速率。 * 新增了 EVENT_SESSION_RECLAIMED 事件,它表示應用打開的會話已被資源管理器收回。如果您的應用使用 DRM 會話,則應處理此事件,并確保不使用收回的會話。 * 新增了 ERROR_RECLAIMED 錯誤代碼,它表示資源管理器收回了編解碼器使用的媒體資源。出現此異常時,必須釋放編解碼器,因為它已轉入終止狀態。 * 新增了 getMaxSupportedInstances() 接口,用于獲取有關支持的編解碼器實例最大并發數量的提示。 * 新增了 setPlaybackParams() 方法,用于設置快動作回放或慢動作回放的媒體回放速率。此外,它還會隨視頻一起自動拉長或加速音頻回放。 #### **相機功能** 此版本提供了下列用于訪問相機閃光燈和相機圖像再處理的新 API: **Flashlight API** 如果相機設備帶有閃光燈,您可以通過調用 setTorchMode() 方法,在不打開相機設備的情況下打開或關閉閃光燈的火炬模式。應用對閃光燈或相機設備不享有獨占所有權。每當相機設備不可用,或者開啟火炬的其他相機資源不可用時,火炬模式即會被關閉并變為不可用狀態。其他應用也可調用 setTorchMode() 來關閉火炬模式。當最后一個開啟火炬模式的應用關閉時,火炬模式就會被關閉。 您可以注冊一個回調,通過調用 registerTorchCallback() 方法接收有關火炬模式狀態的通知。第一次注冊回調時,系統會立即調用它,并返回所有當前已知配備閃光燈的相機設備的火炬模式狀態。如果成功開啟或關閉火炬模式,系統會調用 onTorchModeChanged() 方法。 **Reprocessing API** Camera2 API 進行了擴展,以支持 YUV 和專用不透明格式圖像再處理。要確定這些再處理功能是否可用,請調用 getCameraCharacteristics() 并檢查有無 REPROCESS_MAX_CAPTURE_STALL 密鑰。如果設備支持再處理,您可以通過調用 createReprocessableCaptureSession() 創建一個可再處理的相機采集會話并創建輸入緩沖區再處理請求。 使用 ImageWriter 類可將輸入緩沖區流與相機再處理輸入相連。要獲得空白緩沖區,請遵循以下編程模型: 1. 調用 dequeueInputImage() 方法。 2. 在輸入緩沖區中填充數據。 3. 通過調用 queueInputImage() 方法將緩沖區發送至相機。 如果您將 ImageWriter 對象與 PRIVATE 圖像一起使用,您的應用并不能直接訪問圖像數據。請改為調用 queueInputImage() 方法,將 PRIVATE 圖像直接傳遞給 ImageWriter,而不進行任何緩沖區復制。 ImageReader 類現在支持 PRIVATE 格式圖像流。憑借此支持特性,您的應用可使 ImageReader 輸出圖像保持為循環圖像隊列,還可選擇一個或多個圖像并將其發送給 ImageWriter 進行相機再處理。 #### **Android for Work 功能** 此版本提供了下列用于 Android for Work 的新 API: * **用于企業所有、單一用途設備的增強型控件**:現在,設備所有者可以通過控制以下設置來改善企業所有、單一用途 (COSU) 設備的管理: * 通過 setKeyguardDisabled() 方法停用或重新啟用鍵盤鎖。 * 通過 setStatusBarDisabled() 方法停用或重新啟用狀態欄(包括快速設置、通知以及啟動 Google 即時的向上劃動導航手勢)。 * 通過 UserManager 常量 DISALLOW_SAFE_BOOT 停用或重新啟用安全啟動。 * 通過 STAY_ON_WHILE_PLUGGED_IN 常量防止屏幕在插入電源的情況下關閉。 * **設備所有者靜默式安裝和卸載應用**:現在,設備所有者可使用 PackageInstaller API 在不依賴 Google Play for Work 的情況下靜默式安裝和卸載應用。現在,您可以通過設備所有者配置設備,從而無需用戶干預即可獲取并安裝應用。此功能可用于在不激活 Google 帳戶的情況下實現信息亭或其他此類設備的一鍵式配置。 * **靜默式企業證書訪問**: 現在,當應用調用 choosePrivateKeyAlias() 時,配置文件所有者或設備所有者可以在系統提示用戶選擇證書前調用 onChoosePrivateKeyAlias() 方法,靜默式向發出請求的應用提供別名。此功能讓您可以在無需用戶交互的情況下授予托管應用訪問證書的權限。 * **自動接受系統更新**。現在,設備所有者可以通過 setSystemUpdatePolicy() 設置一個系統更新政策來自動接受系統更新(例如對于信息亭設備),或者推遲更新并在至多 30 天的時間內防止用戶獲取更新。此外,管理員還可設置每日必須獲取更新的時間窗口,例如在信息亭設備無人使用的時段。有可用的系統更新時,系統會檢查設備規范控制器應用是否設置了系統更新政策,并相應地執行操作。 * **授權證書安裝**:配置文件所有者或設備所有者現在可以授權第三方應用調用以下 DevicePolicyManager 證書管理 API: * getInstalledCaCerts() * hasCaCertInstalled() * installCaCert() * uninstallCaCert() * uninstallAllUserCaCerts() * installKeyPair() * **流量消耗情況跟蹤**。現在,配置文件所有者或設備所有者可以利用新增的 NetworkStatsManager 方法查詢 Settings > Data Usage 中顯示的流量使用情況統計信息。配置文件所有者會被自動授予查詢其管理的配置文件相關數據的權限,而設備所有者則被授予對其管理的主要用戶使用情況數據的訪問權。 * **運行時權限管理**: 配置文件所有者或設備所有者可以利用 setPermissionPolicy() 設置適用于所有應用全部運行時請求的權限政策,以提示用戶授予權限,或自動以靜默方式授予或拒絕權限。如果設置后一種政策,則用戶將無法修改配置文件所有者或設備所有者在應用權限屏幕的 Settings 內所做的選擇。 * **Settings 中的 VPN**:現在,Settings > More > VPN 中會顯示 VPN 應用。此外,現在,關于 VPN 使用情況的通知取決于該 VPN 的配置方式。對于配置文件所有者,通知取決于該 VPN 是針對托管配置文件、個人配置文件還是同時針對這兩者進行配置。對于設備所有者,通知取決于 VPN 是否針對整個設備進行配置。 * **工作狀態通知**:現在,每當來自托管配置文件的應用具有前臺 Activity 時,狀態欄就會出現一個公文包圖標。此外,如果設備直接解鎖到托管配置文件中某個應用的 Activity,則會顯示一個 Toast,通知用戶他們位于托管配置文件內。 ![](https://box.kancloud.cn/5f23549769e907fcf17762326fdffb90_200x396.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看