<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### **[Android 8.1功能和API](https://developer.android.com/about/versions/oreo/android-8.1.html)** Android 8.1(API級別27)為用戶和開發人員引入了各種新特性和功能。本文檔重點介紹了開發人員的新功能。 #### **Android奧利奧(Go版)** Android Go是我們主動為全球數十億在線用戶優化Android體驗。從Android 8.1開始,我們將使Android成為入門級設備的絕佳平臺。Android Oreo(Go版)配置中的功能包括: * 內存優化。改善整個平臺的內存使用情況,確保應用程序可以在1GB或更少RAM的設備上高效運行。 * 靈活的定位選項。新的 硬件功能常量,可讓您通過Google Play將應用程序分配到普通或低RAM設備。 * Google Play。雖然所有的應用程序都可以在運行Android Oreo(Go版)的設備上使用,但Google Play將提供開發人員專門優化的應用程序的可見性,為數十億用戶提供數十億 指導方針的良好體驗 。 我們已經更新了數十億 指南的建設, 并提供了關于如何 針對運行Android Oreo(Go版)的設備優化您的應用的其他指導 。對于大多數開發者來說,優化現有的APK或使用Google Play的 多APK功能將您的APK版本定位到低內存設備是準備運行Android Oreo(Go版)的設備的最佳方式。請記住,無論使用哪種設備,讓您的應用 更輕盈,更高效,都可以讓您的整個觀眾受益 #### **神經網絡API** Neural Networks API為設備上的機器學習框架(如TensorFlow Lite -Google的移動平臺ML庫以及Caffe2等)提供了加速的計算和推理。訪問TensorFlow Lite 開源回購下載和文檔。TensorFlow Lite可與Neural Networks API 協同工作,在移動設備上高效運行 MobileNets, Inception v3和 Smart Reply等模型。 #### **自動填充框架更新** Android 8.1(API級別27)對自動填充框架進行了一些改進,您可以將其添加到應用程序中。 該BaseAdapter 級現在包括setAutofillOptions() 方法,它允許您提供值的字符串表示在一個適配器。這對于 在其適配器中動態生成值的微調控件非常有用。例如,您可以使用該setAutofillOptions()方法提供用戶可以選擇作為信用卡過期日期一部分的年份列表的字符串表示形式。自動填充服務可以使用字符串表示來適當填寫需要數據的視圖。 此外,AutofillManager 該類還包括notifyViewVisibilityChanged(View, int, boolean)可以調用的方法,以通知框架關于虛擬結構中視圖可見性的更改。非虛擬結構的方法也有重載。但是,非虛擬結構通常不要求您明確地通知框架,因為該方法已被View 該類調用 。 Android 8.1還為Autofill服務提供了更多的能力,通過添加對CustomDescription and Validator 內部的支持來定制保存UI可供性SaveInfo。 自定義描述可幫助自動填充服務澄清正在保存的內容; 例如,當屏幕包含信用卡時,它可以顯示信用卡銀行的標志,信用卡號碼的最后四位數字和到期號碼。要了解更多信息,請參閱 CustomDescription 課程。 Validator 對象用于避免在驗證條件不滿足時顯示自動填充保存UI。要了解更多信息,請參閱 Validator類及其子類 LuhnChecksumValidator和RegexValidator。 #### **通知** Android 8.1包含對通知的以下更改: * 應用程序現在只能每秒發出一次通知警報聲音。超過這個速度的警報聲音不會排隊并丟失。此更改不會影響通知行為的其他方面,通知郵件仍按預期發布。 * NotificationListenerService并且 在 被稱為ConditionProviderService返回的低內存Android設備上不受支持。 trueActivityManager.isLowRamDevice() #### **EditText更新** 從API級別27開始,該EditText.getText()方法返回一個Editable; 以前它返回一個CharSequence。這種變化是向后兼容的,作為Editable實現 CharSequence。 該Editable接口提供了寶貴的附加功能。例如,因為Editable也實現了Spannable接口,所以可以將標記應用于實例中的內容EditText。 #### **程序化安全瀏覽操作** 通過使用安全瀏覽API 的實施,您的應用可以檢測何時嘗試導航到Google已經歸類為已知威脅的URL 的實例。默認情況下,會 顯示警告用戶已知威脅的插頁式廣告。該屏幕允許用戶選擇加載URL,或返回到安全的上一頁。 WebViewWebViewWebView 在Android 8.1中,您可以通過編程來定義您的應用程序如何響應已知的威脅: * 您可以控制您的應用是否將已知威脅報告給安全瀏覽。 * 您可以讓自己的應用程序自動執行特定操作(例如回到安全狀態),每次遇到安全瀏覽會將其歸類為已知威脅的網址時。 > 注意:為了最大限度地防范已知威脅,請等到您在調用WebView對象的loadUrl()方法之前初始化安全瀏覽 。 以下代碼片段顯示了如何指示您的應用程序的實例 WebView在遇到已知威脅后總是返回到安全狀態: AndroidManifest.xml中 ~~~ <manifest> <application> ... <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing" android:value="true" /> </application> </manifest> ~~~ **MyWebActivity.java** ~~~ private WebView mSuperSafeWebView; private boolean mSafeBrowsingIsInitialized; // ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSuperSafeWebView = new WebView(this); mSuperSafeWebView.setWebViewClient(new MyWebViewClient()); mSafeBrowsingIsInitialized = false; mSuperSafeWebView.startSafeBrowsing(this, new ValueCallback<Boolean>() { @Override public void onReceiveValue(Boolean success) { mSafeBrowsingIsInitialized = true; if (!success) { Log.e("MY_APP_TAG", "Unable to initialize Safe Browsing!"); } } }); } ~~~ **MyWebViewClient.java** ~~~ public class MyWebViewClient extends WebViewClient { // Automatically go "back to safety" when attempting to load a website that // Safe Browsing has identified as a known threat. An instance of WebView // calls this method only after Safe Browsing is initialized, so there's no // conditional logic needed here. @Override public void onSafeBrowsingHit(WebView view, WebResourceRequest request, int threatType, SafeBrowsingResponse callback) { // The "true" argument indicates that your app reports incidents like // this one to Safe Browsing. callback.backToSafety(true); Toast.makeText(view.getContext(), "Unsafe web page blocked.", Toast.LENGTH_LONG).show(); } } ~~~ #### **視頻縮略圖提取器** 的MediaMetadataRetriever類有一個新的方法,getScaledFrameAtTime()即找到鄰近給定的時間位置的幀,并返回具有相同的縱橫比作為源幀的位圖,但是縮放,以符合給定寬度和高度的矩形。這對于從視頻生成縮略圖圖像很有用。 我們建議使用這種方法,而不是getFrameAtTime()浪費內存,因為它返回一個與源視頻分辨率相同的位圖。例如,來自4K視頻的幀將是16MB的位圖,遠大于縮略圖所需的位圖。 #### **共享內存API** Android 8.1(API等級27)引入了一個新的 SharedMemory API。這個類允許你創建,映射和管理一個匿名 SharedMemory 實例。您可以將SharedMemory 對象的內存保護設置 為讀取和/或寫入,并且由于 SharedMemory 對象是Parcelable,因此可以通過AIDL輕松地將其傳遞給另一個進程。 該SharedMemory API與互操作 ASharedMemory的NDK設施。 ASharedMemory允許訪問文件描述符,然后可以將其映射到讀取和寫入。這是在應用程序之間或單個應用程序中的多個進程之間共享大量數據的好方法。 #### **WallpaperColors API** Android 8.1(API等級27)允許您的動態壁紙為系統UI提供顏色信息。您可以通過WallpaperColors 從位圖,可繪制對象或使用三種手動選擇的顏色創建對象來實現此目的。你也可以檢索這個顏色信息。 要創建一個WallpaperColors 對象,請執行以下任一操作: * 要WallpaperColors 使用三種顏色創建對象,請WallpaperColors 通過傳遞一級,二級和三級顏色來創建該類的實例。原色不能為空。 * 要從WallpaperColors 位圖創建對象,請fromBitmap() 通過傳遞位圖源作為參數來調用該方法。 * 要從WallpaperColors drawable 創建一個對象,請fromDrawable() 通過傳遞可繪制的源作為參數來調用該方法。 要從壁紙檢索主要,次要或第三個顏色細節,請調用以下方法: * getPrimaryColor() 返回壁紙最具視覺代表性的顏色。 * getSecondaryColor() 返回壁紙的第二個最顯著的顏色。 * getTertiaryColor() 方法返回壁紙的第三個最顯著的顏色。 要通知系統有關您的動態壁紙的任何重大的顏色變化,請調用該notifyColorsChanged() 方法。onComputeColors()在有機會提供新WallpaperColors 對象的情況下,此方法會觸發生命周期事件。 要添加用于顏色更改的偵聽器,可以調用該addOnColorsChangedListener()方法。您也可以調用該getWallpaperColors()方法來檢索壁紙的主要顏色。 #### **指紋更新** 該FingerprintManager班先后引進了以下錯誤代碼: * FINGERPRINT_ERROR_LOCKOUT_PERMANENT - 用戶嘗試使用指紋讀取器解鎖設備的次數過多。 * FINGERPRINT_ERROR_VENDOR - 發生特定于供應商的指紋識別器錯誤。 #### **加密更新** Android 8.1已經進行了許多密碼修改: * 新的算法已經在Conscrypt中實現。Conscrypt實現優先用于現有的Bouncy Castle實現。新算法包括: * AlgorithmParameters:GCM * KeyGenerator:AES * KeyGenerator:DESEDE * KeyGenerator:HMACMD5 * KeyGenerator:HMACSHA1 * KeyGenerator:HMACSHA224 * KeyGenerator:HMACSHA256 * KeyGenerator:HMACSHA384 * KeyGenerator:HMACSHA512 * SecretKeyFactory:DESEDE * Signature:NONEWITHECDSA * Cipher.getParameters().getParameterSpec(IvParameterSpec.class)不再適用于使用GCM的算法。相反,使用 getParameterSpec(GCMParameterSpec.class)。 * 與TLS相關的許多內部的加密類被重構。由于開發人員有時會反射地訪問這些內容,所以墊片已經被留下以支持以前的使用,但是一些細節已經改變。例如,之前的套接字是類型的OpenSSLSocketImpl,但是現在它們是類型的, ConscryptFileDescriptorSocket或者 ConscryptEngineSocket兩者都擴展 OpenSSLSocketImpl。 * SSLSessionIllegalArgumentException當傳遞一個空引用時拋出的方法被 拋出NullPointerException。 * RSA KeyFactory不再允許從字節數組中生成大于編碼密鑰的密鑰。調用 generatePrivate()并 generatePublic()提供一個 KeySpec關鍵結構不填充整個緩沖區的地方將導致一個InvalidKeySpecException。 * 當套接字讀取被關閉的套接字中斷時,Conscrypt用于從讀取中返回-1。現在閱讀拋出 SocketException。 * 根CA證書集已被更改,大部分刪除了大量的廢棄證書,同時也刪除了WoSign和StartCom的根證書。有關此決定的更多信息,請參閱Google安全博客文章, [WoSign和StartCom證書的最終刪除信任](https://security.googleblog.com/2017/07/final-removal-of-trust-in-wosign-and.html)。
                  <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>

                              哎呀哎呀视频在线观看