為 Android 應用打造精良的 Chrome OS 使用體驗

2021-01-16 谷歌開發者

從發布我們的首款平板電腦和可拆分式筆記本,到在日本和德國等新市場推出 Chromebook,我們一直在努力使 Chrome OS 設備的生態系統滿足如今應用用戶們的需求。隨著人們越來越多地在大屏幕設備或者多型態設備上使用應用,開發者們的作品也得以吸引大量全新的用戶。


Android 支持各種各樣的大屏幕設備,包括平板電腦、可摺疊設備、Chrome OS 筆記本等等。由於 Chromebook 在容器內運行完整版 Android 框架,所以絕大多數 Android 應用都可以在 Chrome OS 上運行。這意味著開發者可以使用他們既有的 Android APK,並將其擴展後適配 Chrome OS 設備,從而在更大屏幕的設備上帶來更加沉浸且引人入勝的體驗。


用戶在 Chrome OS 中使用 Android 應用的時長在去年增長了 4 倍 ¹ 。在 2018 年第四季度,美國銷售的筆記本電腦中有 21% 是 Chromebook,同比增長 23% ²。¹ Google Internal Data, March 2018 to March 2019.² The NPD Group, Inc., Retail Tracking Service, U.S., Notebook Computers, Chrome OS, based on units, Oct. 8, 2017- Jan. 6, 2018 vs. Oct. 7, 2018- Jan. 5, 2019.


在 Chrome OS 上提供精良的體驗只需對現有應用做出少量的調整,但這些調整能帶來非常巨大的改觀。在針對大屏幕設備優化應用之後,Gameloft 的 Asphalt 8: Airborne 的每日用戶量增加了 6 倍,Chrome OS 設備帶來的收入則增加 9 倍;TopHatch 在 Chromebook 上的付費轉化率增加了 100%,消費者在 Pixelbook 上的 Concepts 應用中投入的時間則增加了 20 倍。

在今年的 I/O 開發者大會上我們有一場專門的演講,為大家介紹如何讓應用在各種外形和尺寸的設備上都能擁有良好的視覺和性能表現。這裡我們整理了 (以及新增了一些) 適配時的重點供 Android 開發者們參考。





用戶使用應用的方式完全取決於其使用的設備。您應該考慮以下幾個要素,以確保您的應用能夠提供最佳用戶體驗:


鍵盤輸入


override fun onKeyUp(code: Int, ev: KeyEvent?): Boolean {    return when (code) {        KeyEvent.KEYCODE_J -> {                        true        }        else -> super.onKeyUp(code, ev)     }}


注意我們標出 "重要" 的那一行代碼。這行代碼會將沒有被開發者處理的鍵值交回給父類邏輯處理,而不是忽視它們。


刷新鍵

Chrome OS 鍵盤上有獨有的刷新鍵,而且有自己的鍵值 (KEYCODE_REFRESH),因此請確保您的應用可以處理 KEYCODE_REFRESH 事件。如果您已經在使用 SwipeRefreshLayout,Chrome OS 可以確保布局能響應刷新按鈕事件。


觸控板

當有人在帶觸摸板的桌面設備上使用您的應用時,他們會希望使用雙指輕掃觸摸板進行滾動;但在行動裝置上,用戶通常會按住並拖動屏幕來實現滾動。Chrome OS 會自動解析這些不同類型的動作事件,例如,當用戶在使用繪圖應用時如果做出了滾動的操作,繪圖應用不會讓畫筆在畫面上塗抹。


對於需要更高級觸摸事件處理的應用,可以在 event.getButtonState()== 0 時忽略 MotionEvents 來檢查按鍵狀態,並忽略掉不需要的事件 (參考上面的繪圖應用例子)。


Chrome OS 上遊戲和應用會自動獲得 ARM - x86 指令翻譯。但如果您希望獲得更佳的性能,那支持 x86 就至關重要。大多數高端 Chrome OS 設備都搭載了 64 位 x86 晶片 (更多這樣的設備也即將到來)。如果您想在所有設備上都提供最佳性能,那請確保您的構建支持 ARM、ARM64、x86 和 x86_64 (如果您有對應的原生代碼的話)。


支持 64 位 x86 的 Chrome OS 設備https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices

好消息是,Android Studio 能讓這種多平臺支持變得簡單: 只需使用 Android App Bundle 即可,它會將所有的構建打包,然後通過 Play Store 只發送用戶設備所需要的那一部分,從而將下載文件體積保持在最低限度。


如果一個應用的界面布局沒有專門適配過大屏幕,那當它運行在大屏幕上時效果會非常尷尬——大量被浪費的空間,和非常不順手的導航,這些都會讓用戶感到困惑。為了確保您的應用在多種布局中都能擁有良好的完成度,您可以讓同一個界面擁有多個布局文件 (如下圖)。

△ 同一個界面針對不同屏幕的布局文件

同時,您的應用在不同的屏幕尺寸上都應該易於使用。提供縱向、橫向等布局,使得應用可以根據可用的屏幕寬度,在底部導航、側邊導航和側邊擴展導航模式之間切換。
https://github.com/google/chromeosnavigationdemo電子郵件應用 Reply 就針對多種屏幕重新設計了其功能和布局。Adobe Acrobat 在適配 Chrome OS 的時候,也同樣考慮了不同設備的布局區別。https://material.io/design/material-studies/reply.html#about-reply△ Reply 在屏幕尺寸不同時會採用不同的導航模式

多屏幕

當用戶使用多個顯示器時,兩個屏幕之間通常會存在像素密度差異。您可以通過在界面裡監聽 onConfigurationChanged 來得知像素密度 (density) 的變化,從而對界面做出調整。




在 I/O 上我們還發布了很多新內容,將 Chrome OS 打造成為 Web 和 Android 開發者更快捷、更簡單、更安全的開發環境,具體包括:


一鍵安裝 Android Studio

只需下載、單擊和安裝,不再需要使用 terminal。

不再需要開發者模式,只需使用 USB 連接手機即可進行調試。

https://www.chromium.org/chromium-os/chrome-os-systems-supporting-adb-debugging-over-usb


Lint 檢查

高亮顯示鎖定的或不友好的屏幕方向、不可調整大小的界面、不正確的硬體要求以及其他不適合 Chrome OS 的功能。


Chrome OS 容器支持 Linux 的所有音頻工具,例如 Audacity。


這是 M76 (也是我們目前的穩定渠道) 中的一個功能,當您的屏幕被很多窗口塞滿時,可以新開一個虛擬桌面。


在外部顯示器上投屏觀看受 DRM 保護的視頻內容 *。* 使用此功能時請調用 SurfaceView.setSecure()




https://developer.android.google.cn/topic/google-play-instant

外部存儲

Android 應用現在可以訪問連接至設備的外部存儲。


Chrome OS 文件管理器在 Play files 文件夾裡可以顯示 Android 的 /sdcard 文件夾,從而讓用戶可以通過 Chrome 容器讀寫 Android 文件。


Chrome OS 現在支持 Android DocumentsProvider 接口,可以通過 DocumentsProvider 和自定義文檔提供程序支持 Android Cloud 雲存儲。


集成分析工具允許開發者隨時檢測系統狀態: 包括緩衝區使用、垂直同步、CPU 使用、GPU 和 CPU 頻率以及系統溫度,從而便於開發者定位動畫卡頓和/或系統速度降低的原因。


體驗應用的場景已經遠遠超出了行動裝置。在設備形式更加多樣化的今天,用戶每次打開應用時都希望獲得精心設計的界面和友好的交互體驗。請您充分利用我們給出的新特性,支持各種輸入方式,針對各種屏幕尺寸優化布局和導航,並儘可能通過原生代碼支持 x86,從而為用戶打造精良迅捷的使用體驗。


您的 Android 應用有沒有支持更大、更多樣的屏幕尺寸、更多種類的設備?有沒有為它們提供高完成度的使用體驗?如果您在界面和交互適配上有任何疑問或者想法,歡迎在評論區和我們分享。



 點擊屏末 |  | 即刻讓您的 Android 應用登上更大的舞臺




相關焦點

  • 厲害了,FydeOS - 可原生運行 Android + Linux 應用的國產 OS
    其實,FydeOS 對於 android 的兼容可能有問題,畢竟 android 主要是手機領域,拿到桌面上終究有 UI 適配問題,而 內置的 Linux 系統就不一樣了,原生運行 Linux 應用,不可能不兼容。當然,Android 應用也一定會兼容,但等於平板跑 android 手機應用,大致就是這麼個體驗。
  • 拯救你的舊電腦:能裝在U盤裡的作業系統-Chrome OS
    Chrome OS軟體結構極其簡單,可以理解為在Linux的內核上運行一個使用新的窗口系統的Chrome瀏覽器。對於開發人員來說,web就是平臺,所有現有的web應用可以完美的在Chrome OS中運行,開發者也可以用不同的開發語言為其開發新的web應用。
  • FydeOS 使用體驗:為中國用戶打造的 Chrome OS
    今年早些時候,IT之家在一篇文章中和大家討論了Chrome OS的使用體驗,不過對於一些讀者來講,要開始使用這款在大程度上依賴Google服務的作業系統可能並不是一件容易的事情。考慮到這點,這期文章,我們不妨來討論這樣一款並不依賴Google服務的、專為中國用戶打造的「Chrome OS」——FydeOS。
  • Google讓Chromebook用戶在Chrome OS中管理所有Android文件
    Google Chromium開發者FrançoisBeaufort透露,Chrome作業系統團隊正計劃在Files應用中讓Chromebook
  • Google Play Services 後續可能會同步android手機和chrome os之間...
    https://www.uso.cn/post/view/56632     如果您換新手機的話,可以從舊手機裡同步數據到新手機,您會發現只要兩個手機使用的是同一帳戶但是,如果你使用的是chrome book的話,就算你使用的是和你安卓手機上一樣的谷歌帳號,chrome os還是會要求你輸入wifi密碼。  不過根據Google Play Services beta 20.45版本的反編譯來看,谷歌似乎準備讓Google Play Services 可以同步你安卓手機上保存的wifi密碼到你的chrome book上。
  • Android應用實例之---使用Linkify + 正則式區分微博文本連結及...
    你可以指定任意的字符串樣式為連結,Linkify類提供了預置的通用內容類型(如電話號碼和e-mail、web地址)。特性來為View製作連結。接下來的XML片段顯示了如何為電話號碼和e-mail地址添加超連結: <TextViewandroid:id="@+id/txt";android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello";android:textColor="#FFFFFF"android
  • 最新Chrome OS開發版中谷歌為Linux應用引入完整USB支持
    在最新上線的Chrome OS 75開發者版本中,谷歌為Linux應用程式引入了完整的USB支持。在最新上線的v75.0.3759.4版本中,這項新功能的引入將有助於改善在Chromebook上運行Linux應用程式的體驗。
  • android應用程式結構分析
    package android.basic.lesson2.helloworld;import android.app.Activity;import android.os.Bundle;public class MainHelloWorld extends Activity {/** Called when the activity is first created
  • 跟我做,讓老設備即刻體驗Android 5.0
    最近兩年 Google 為了解決 Android 碎片化的問題,做了一個非常重要的決定 —— 將 Android 系統內置的 App 剝離出來,逐個單獨上架 Play商店,把系統的更新和簡訊、日曆等常用 App 的更新進行分離,讓更多用戶第一時間體驗到最新的軟體特性。這一次也不例外。
  • 使用Junit對Android應用進行單元測試
    本文將指導讀者如何將Android Junit框架應用到Android應用中去。本文還特別重點展示了如何測試Android中的Activity和如何識別程序中的錯誤。  本文的示例代碼可以在http://code.google.com/p/simple-calc-unit-testing/中下載  步驟1 被測試的應用SimpleCalc概況  在本文中,將以一個寫好了的應用SimpleCalc簡單計算器為例子進行講解。
  • Chrome OS 75 可將安卓雲存儲應用安裝到原生文件應用
    當它最終出現在 Chromebook 中時,你會看到一個很棒的新功能:安裝安卓雲端存儲應用時,本機 Chrome OS 文件應用中會將其顯示為已安裝的驅動器。這樣一來,只要安裝安卓雲存儲應用,即可實現和原生文件應用一樣的體驗。Chrome Story 最近分享了這條消息,這個消息一個月前首次在 Reddit 上被發現。
  • Google OS 筆記本可能再過一年就會有了
    純手工打造每一篇開源資訊與技術乾貨,數十萬程式設計師和Linuxer已經關
  • Chromebook敞門迎接Android應用
    由於我們將越來越重視移動性,因此,我們需要確保您的應用能夠輕鬆地在這個新機型上使用,在覆蓋許多 Chrome 設備的同時保證卓越的體驗。▲ Chromebook: 給任何地方的任何人  今天,我們宣布我們正在將 Android 應用添加到 Chromebook 中,這意味著用戶將能夠安裝他們了解和喜愛的應用。
  • Android的電源管理
    接下來我們從Java應用層面, Android framework層面, Linux內核層面分別進行詳細的討論:應用層的使用:Android提供了現成android.os.PowerManager類,該類用於控制設備的電源狀態的切換
  • Chromebook用戶可在Chrome OS中管理所有文件
    oisBeaufort透露,Chrome作業系統團隊正計劃在Files應用中讓Chromebook設備管理所有的Android文件 。被稱為「Android文件」的新功能已在Chrome OS Dev頻道中實施,並承諾讓Chromebook擁有者使用Chrome作業系統中的默認文件應用管理其所有Android文件。
  • 胖·評測|類Chromebook為什麼適合K12學生使用?
    chrome os藉助谷歌市場的龐大應用資源,有著相當不錯基於chromium的應用插件,涵蓋文檔協作、日程管理、影音娛樂等學生日常需要的應用;同時,chrome OS不斷優化,兼容andriod和Linux系統應用,2017年以後推出的chromebook基本都可以安裝主流安卓應用程式。
  • Mac os big sur安裝及使用體驗
    01Mac os big sur安裝及使用體驗>今年的wwdc上發布了我也體驗了其他的系統ios,watch oswatch os7我就體驗不出他有什麼特別了,沒有新壁紙(期待他9月的更新裡面會有吧)而且的話今年的watch os有點失望,ios全新的界面可能會讓大家覺得特別一點而且有點更像安卓,不過耗電是真的快啊,一天最少2次(而且我的手機電池健康還有
  • 如何使用am命令啟動Android應用
    如何用命令自動播放音樂、自動打開瀏覽器、自動打開任意一個應用呢?這就要用到am命令。本文將詳細介紹使用am命令啟動應用的四種方法,相信會對你的測試開發工作有所幫助。一、使用am命令啟動一般的Android App。
  • 歡迎體驗 Android 10!
    Android 10 聚焦移動創新、安全隱私和數字健康三大主題,全面打造最佳用戶體驗。首先,Android 10 利用前沿機器學習技術,助力摺疊屏、5G 等新型設備,勇於突破傳統技術壁壘,讓用戶暢享最具創新力的移動體驗。
  • App自動化測試 | Android WebView測試
    混合應用中包含 Web 視圖的應用,在