Diposting oleh Alex Vanyo, Insinyur Hubungan Pengembang

Di Google I/O kami mengumumkan bahwa Pixel Tablet dan Pixel Fold bergabung dengan keluarga perangkat Pixel kami. Dengan pre-order yang sedang berlangsung, sekarang saatnya memperbarui aplikasi Anda agar berfungsi dengan baik di perangkat ini!

Blog ini membahas dua topik: apa yang membuat Pixel Fold dan Pixel Tablet unik, dan bagaimana Anda dapat menguji aplikasi Anda di perangkat ini sebelum tersedia secara umum.

Kabar baik tentang Pixel Fold dan Pixel Tablet adalah, jika aplikasi Anda sudah dioptimalkan untuk layar yang lebih besar, Anda tidak perlu melakukan banyak hal.

Untuk panduan developer layar besar umum, mulai dengan developer.android.com/large-screens. Selain itu, kami memublikasikan postingan blog tepat sebelum I/O dengan beberapa hal yang harus dan tidak boleh dilakukan untuk layar besar. Dan kami memublikasikan seluruh rangkaian video di I/O tentang cara mengoptimalkan aplikasi Anda untuk layar besar.

Selain panduan pengembangan layar besar secara umum, ada beberapa hal yang membuat Pixel Fold dan Pixel Tablet unik di pasaran saat ini:

  1. Pixel Fold dapat dibuka dari potret ke lanskap (bukan dari potret ke potret)
  2. Orientasi sensor kamera belakang Pixel Fold ortogonal dengan orientasi tampilan bagian dalam
  3. Pixel Tablet memiliki dok

Kami akan membahasnya satu per satu sehingga Anda tahu apa yang harus diwaspadai saat memperbarui aplikasi Anda sendiri.

Berikan pengalaman terungkap yang menyenangkan

Salah satu masalah aplikasi yang paling sering kami temui selama pengembangan Pixel Fold adalah aplikasi yang tidak memperhitungkan perubahan dinamis dari lingkungan tampilan potret ke lanskap. Di Pixel Fold dan Pixel Tablet, pengguna dapat memutar dan melipat perangkat sesuka hati, dan melakukan banyak tugas dengan aplikasi apa pun. Jika aplikasi membatasi orientasi atau kemampuan mengubah ukuran, sistem menempatkan aplikasi ke mode kompatibilitas saat pengguna menggunakan aplikasi dalam konfigurasi yang tidak didukung aplikasi secara langsung. Asumsi sebelumnya yang dibuat di aplikasi Anda, seperti asumsi bahwa aplikasi berjalan dalam layar penuh dan tidak akan diubah ukurannya, dapat menyebabkan masalah pada perangkat baru ini.

Ada dua kelas masalah yang dialami aplikasi saat pengguna membuka perangkat:

Kontinuitas

Jika Anda tidak mengelola dan menyimpan status UI dengan benar, pengguna Anda dapat kehilangan status saat berpindah dari tampilan luar yang dilipat ke tampilan dalam yang tidak dilipat. Ini bisa sangat membuat frustasi bagi pengguna. Misalnya, pengguna mungkin mulai mengisi formulir di aplikasi di jendela kecil dalam mode multi-jendela atau di tampilan luar perangkat lipat dan menyadari bahwa area layar ekstra dari jendela atau layar yang lebih besar akan sangat membantu untuk menyelesaikan tugas. . Jika aplikasi Anda kehilangan status, pengguna akan kehilangan semua data entri formulir sebelumnya dan terpaksa memulai dari awal. Meskipun ini tidak unik untuk Pixel Fold (bug yang sama kemungkinan akan terjadi jika aplikasi Anda diubah ukurannya dalam mode multi-jendela), situasinya menjadi jauh lebih umum pada perangkat foldable ketika tindakan beralih dari dilipat ke dibuka adalah kejadian umum. .

Kesimpulannya: pastikan Anda menyimpan status UI dengan benar.

Tata letak

Masalah lain yang kami lihat adalah aplikasi diberi kotak surat di tampilan bagian dalam, meskipun mendukung tata letak lanskap. Kami juga telah melihat kasus di mana aplikasi dapat dibuat dengan huruf pada layar bagian dalam Pixel Fold saat perangkat dipegang dalam orientasi lanskap alami, tetapi memutar perangkat ke potret dan kembali ke lanskap dapat membuat aplikasi kembali ke layar penuh!

Semua bug ini berasal dari logika boolean “isTablet”.

Anggaplah kita sedang mengerjakan aplikasi yang menggunakan logika “isTablet” untuk menentukan apakah orientasi aktivitas harus dibatasi pada potret. Kami melihat banyak pengembang melakukan ini untuk membatasi tata letaknya ke potret pada ponsel, tetapi membuka kunci dukungan lanskap pada perangkat layar besar. Cara umum untuk menentukan isTablet adalah dengan menggunakan nilai boolean dengan lebar terkecil yang memenuhi syarat (misalnya, isTablet=true untuk sw>=600dp) atau kode yang setara menggunakan API WindowMetricsCalculator computeCurrentWindowMetrics.

Mari kita telusuri logika ini melalui skenario pengguna yang melakukan langkah-langkah berikut dengan Pixel Fold:

  1. Buka aplikasi di layar luar
  2. Dengan aplikasi masih terbuka, buka perangkat
  3. Putar perangkat yang tidak dilipat ke potret
  4. Putar perangkat kembali ke lanskap

Langkah 1: Buka aplikasi di tampilan luar

Dalam hal ini, nilai lebar terkecil adalah < 600dp dan melaporkan isTablet=false. Aplikasi membatasi orientasi aktivitas ke potret dan aplikasi tidak akan berputar ke lanskap di tampilan luar.

Langkah 2: Buka perangkat

Saat perangkat dibuka (ke lanskap), orientasi aktivitas masih terbatas pada potret. Android mengenali ini dan menerapkan letterboxing ke aplikasi sehingga pengguna tidak perlu memutar perangkat untuk terus menggunakan aplikasi. Metrik ukuran konfigurasi dan API WindowMetricsCalculator computeCurrentWindowMetrics mengembalikan metrik tampilan jendela kotak surat, bukan seluruh ukuran layar perangkat. Oleh karena itu, metrik tampilan jendela kotak surat masih memiliki lebar terkecil < 600dp, jadi isTablet masih dievaluasi salah, artinya orientasinya masih terbatas pada potret.

Langkah 3: Putar perangkat yang tidak dilipat ke potret

Saat pengguna memutar tampilan dalam ke potret, aplikasi dapat memanfaatkan tampilan penuh karena orientasi aktivitas dan orientasi tampilan cocok. Dalam hal ini, lebar terkecil adalah > 600 dp dan isTablet bernilai true. Jika Anda memiliki logika aplikasi untuk berhenti membatasi orientasi aktivitas berdasarkan kriteria ini, aktivitas Anda tidak lagi berupa potret, melainkan menjadi tidak ditentukan.

Langkah 4: Putar kembali ke lanskap

Sekarang saat Anda memutar ke lanskap, aplikasi memanfaatkan seluruh layar, dan tidak akan ada tampilan huruf. Meskipun ini adalah hasil yang diinginkan, langkah-langkah untuk mencapainya bisa sangat membingungkan bagi pengguna! Pengguna tidak akan mengerti mengapa aplikasi Anda adalah lanskap layar penuh dalam beberapa kasus tetapi tidak pada yang lain.

Ada dua cara untuk memperbaikinya:

  1. Berhenti membatasi orientasi aktivitas
  2. Gunakan API Jetpack WindowMetricsCalculator computeMaximumWindowMetrics untuk menentukan ukuran maksimum jendela Anda pada tampilan saat ini.

Kami sangat menyarankan cara pertama. Jika aplikasi Anda berfungsi dan dapat digunakan dalam lanskap pada tampilan ponsel tradisional, sebaiknya jangan membatasi aplikasi untuk potret dalam situasi apa pun. Android memiliki fitur kunci rotasi otomatis (dan Pixel Fold memungkinkan pengguna untuk menentukan pengaturan ini secara independen untuk tampilan luar dan dalam), jadi biarkan pengguna memutuskan apakah mereka ingin selalu menggunakan tampilan luar dalam potret atau tidak.

Jika aplikasi Anda memiliki masalah kegunaan atau fungsi yang mencolok pada lanskap, tampilan ukuran ponsel tradisional, gunakan API WindowMetricsCalculator computeMaximumWindowMetrics untuk mengambil ukuran maksimum jendela aplikasi Anda jika diubah ukurannya. Kami memiliki resep buku masak untuk kasus penggunaan khusus ini. Namun, ini harus menjadi solusi sementara sampai Anda membuat tata letak lanskap berfungsi di mana saja.

Jadikan pratinjau kamera Anda berfungsi untuk semua negara bagian

Pratinjau kamera adalah topik rumit yang hanya berlaku jika aplikasi Anda menggunakan kamera secara langsung, jadi kami hanya akan menyorot masalahnya dan membuat rekomendasi cepat. Untuk penggunaan kamera Android yang lebih canggih, lihat panduan pratinjau Kamera mendalam.

Rekomendasi: Kecuali jika Anda memiliki persyaratan API Kamera lanjutan, gunakan pustaka CameraX, yang berisi API mudah digunakan yang menghindari banyak masalah orientasi pratinjau kamera yang dijelaskan di bawah.

Masalah: Ini terkait dengan masalah tata letak. Karena tampilan luar dan dalam beberapa ponsel lipat memiliki orientasi alami yang berbeda, tidak mungkin kedua tampilan cocok dengan orientasi sensor kamera belakang. Jadi, salah satu tampilan harus ortogonal dengan sensor kamera. Untuk Pixel Fold, ini berarti orientasi alami tampilan dalam lanskap diputar relatif terhadap orientasi alami potret sensor kamera utama.

Pratinjau kamera belakang potret pada layar luar potret dan layar dalam lanskap Pixel Fold

Hal ini dapat menyebabkan kesulitan saat membuat tampilan pratinjau kamera jika sebelumnya Anda berasumsi bahwa orientasi kamera selalu sesuai dengan orientasi UI Anda. Anda perlu memastikan bahwa Anda menangani logika rotasi untuk tampilan dan sensor dengan benar sehingga Anda tidak mendapatkan pratinjau kamera yang terdistorsi, diputar, atau terpotong. Jika Anda juga membatasi orientasi dan aplikasi Anda berformat letterbox, orientasi aplikasi Anda mungkin tidak sesuai dengan orientasi perangkat atau orientasi kamera.

Topik ini sangat mendalam, tetapi panduan pratinjau Kamera akan membantu Anda melewati langkah demi langkah ini.

Tangani dok Pixel Tablet

Last but not least adalah dok speaker pengisian daya Tablet Pixel. Mengeluarkan suara ke dok sama seperti mengeluarkan ke speaker eksternal, dan aplikasi tidak perlu melakukan apa pun untuk memperbarui dok secara langsung.

Menghapus Tablet Pixel dari dok

Docking dan undocking memicu perubahan konfigurasi uiMode.

Pastikan aplikasi Anda berfungsi seperti yang diharapkan saat beralih dari dipasang ke dok ke dilepas dan kembali. Sebagian besar aplikasi sudah menangani ini dengan baik.

Hal ini dapat terjadi jika Anda melakukan sesuatu di penangan onConfigurationChanged aplikasi Anda yang akan menyebabkan pengalaman yang mengganggu saat perangkat dipasang ke dok atau tidak. Misalnya, jika aplikasi Anda menyertakan elemen yang memutar media atau konten lain, jangan menjeda pemutaran saat onConfigurationChanged dipanggil. Banyak aplikasi sudah menangani ini dengan baik dan tidak banyak yang perlu dipertimbangkan. Ini akan menjadi gangguan bagi pengguna yang mungkin sedang menonton video di dok dan kemudian ingin membawanya saat bepergian, atau yang mulai memutar musik sambil memegang tablet lalu menyambungkannya untuk menggunakan speaker dok yang lebih baik.

Setelah mengupdate aplikasi agar berfungsi dengan baik di perangkat layar besar, Anda dapat mengujinya di konfigurasi Pixel Fold dan Pixel Tablet baru di Android Studio Hedgehog Canary 3 atau lebih baru. Emulator ini bagus untuk menguji tata letak, tetapi kami terus menyempurnakan emulator ini untuk menyediakan lebih banyak fitur di masa mendatang.

API 34 Pixel Tablet dan emulator Pixel Fold di Android Studio

Untuk menguji fleksibilitas orientasi pratinjau kamera, kami sarankan untuk mencoba tablet apa pun dengan pratinjau kamera Anda dalam mode multi-jendela dan terus mengubah ukuran jendela aplikasi Anda untuk memastikan pratinjau kamera berfungsi seperti yang diharapkan.

Sekarang adalah waktunya untuk memperbarui aplikasi Anda agar menyenangkan pengguna yang mulai membuka kemasan perangkat Pixel Fold dan Pixel Tablet akhir bulan ini!