Cookbook layar besar

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Android menyediakan semua bahan untuk aplikasi layar besar bintang lima. Urutan langkah dalam cookbook ini memilih dan menggabungkan berbagai bahan pilihan untuk memecahkan masalah pengembangan tertentu. Setiap urutan langkah mencakup praktik terbaik, contoh kode berkualitas, dan petunjuk langkah demi langkah agar Anda dapat menjadi koki terbaik untuk perangkat layar besar.

Rating bintang

Urutan langkah diberi rating bintang berdasarkan seberapa baik kesesuaiannya dengan panduan Kualitas aplikasi perangkat layar besar.

Rating bintang lima Memenuhi kriteria Tingkat 1, Memberikan pengalaman yang dirancang khusus untuk perangkat layar besar
Rating bintang empat Memenuhi kriteria Tingkat 2, Dioptimalkan untuk perangkat layar besar
Rating bintang tiga Memenuhi kriteria Tingkat 3, Siap digunakan di perangkat layar besar
Rating bintang dua Memberikan beberapa kemampuan layar besar, tetapi tidak sesuai dengan pedoman kualitas aplikasi perangkat layar besar
Rating bintang satu Memenuhi kebutuhan kasus penggunaan tertentu, tetapi tidak mendukung layar besar dengan optimal

Dukungan kamera Chromebook

Rating bintang tiga

Pastikan pengguna Chromebook dapat menemukan aplikasi Anda di Google Play.

Jika aplikasi kamera Anda dapat berfungsi cukup dengan fitur kamera dasar, pastikan app store tidak mencegah pengguna Chromebook menginstal aplikasi hanya karena Anda tidak sengaja menentukan fitur kamera lanjutan yang tersedia di ponsel kelas atas.

Chromebook memiliki kamera depan bawaan (menghadap pengguna) yang berfungsi dengan baik untuk melakukan konferensi video, snapshot, dan penggunaan lain. Namun, tidak semua Chromebook memiliki kamera belakang (menghadap dunia), dan sebagian besar kamera yang menghadap pengguna di Chromebook tidak mendukung fokus otomatis atau flash.

Praktik terbaik

Aplikasi kamera serbaguna mendukung semua perangkat terlepas dari konfigurasi kamera—perangkat dengan kamera depan, kamera belakang, kamera eksternal yang terhubung dengan USB.

Guna memastikan app store menyediakan aplikasi Anda untuk sebagian besar perangkat, selalu deklarasikan semua fitur kamera yang digunakan oleh aplikasi Anda dan tunjukkan secara eksplisit apakah fitur tersebut diperlukan atau tidak.

Bahan

  • Izin CAMERA — Memberi aplikasi akses ke kamera perangkat
  • Elemen manifes <uses-feature> — Memberi tahu app store tentang fitur yang digunakan oleh aplikasi
  • Atribut required — Menunjukkan kepada app store apakah aplikasi dapat berfungsi tanpa fitur yang ditentukan

Langkah

Ringkasan

Deklarasikan izin CAMERA. Deklarasikan fitur kamera yang menyediakan dukungan kamera dasar. Tentukan apakah setiap fitur diperlukan.

1. Mendeklarasikan izin CAMERA

Tambahkan izin berikut ke manifes aplikasi:

<uses-permission android:name="android.permission.CAMERA" />
2. Mendeklarasikan fitur kamera dasar

Tambahkan fitur berikut ke manifes aplikasi:

<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />
3. Menentukan apakah setiap fitur diperlukan

Setel android:required="false" untuk fitur android.hardware.camera.any guna mengaktifkan akses ke aplikasi Anda dengan perangkat yang memiliki jenis kamera bawaan atau eksternal—atau tidak memiliki kamera sama sekali.

Untuk fitur lainnya, setel android:required="false" untuk memastikan perangkat seperti Chromebook yang tidak memiliki kamera belakang, fokus otomatis, atau flash dapat mengakses aplikasi Anda di app store.

Hasil

Pengguna Chromebook dapat mendownload dan menginstal aplikasi Anda dari Google Play dan app store lainnya. Selain itu, perangkat dengan dukungan kamera berfitur lengkap, seperti ponsel, tidak akan dibatasi fungsi kameranya.

Dengan menyetel fitur kamera yang didukung oleh aplikasi Anda secara eksplisit dan menentukan fitur yang diperlukan aplikasi, Anda telah membuat aplikasi tersedia di sebanyak mungkin perangkat.

Referensi lainnya

Untuk informasi selengkapnya, lihat Fitur hardware kamera dalam dokumentasi <uses-feature>.

Orientasi aplikasi dibatasi di ponsel, tetapi tidak di perangkat layar besar

Rating bintang dua

Aplikasi Anda berfungsi dengan baik pada ponsel dalam orientasi potret, sehingga Anda membatasi aplikasi ke orientasi potret. Namun, Anda melihat peluang untuk melakukan lebih banyak hal pada perangkat layar besar dalam orientasi lanskap.

Bagaimana cara melakukan keduanya—membatasi aplikasi ke orientasi potret di layar kecil, tetapi mengaktifkan orientasi lanskap pada perangkat layar besar?

Praktik terbaik

Aplikasi terbaik menghormati preferensi pengguna seperti orientasi perangkat.

Panduan Kualitas aplikasi perangkat layar besar merekomendasikan agar aplikasi mendukung semua konfigurasi ponsel, termasuk orientasi potret dan lanskap, mode multi-aplikasi, serta status terlipat dan terbentang perangkat foldable. Aplikasi harus mengoptimalkan tata letak dan antarmuka pengguna untuk berbagai konfigurasi, dan aplikasi harus menyimpan serta memulihkan status selama perubahan konfigurasi.

Urutan langkah ini adalah tindakan sementara—dukungan kecil untuk perangkat layar besar. Gunakan urutan langkah hingga Anda dapat meningkatkan kualitas aplikasi untuk memberikan dukungan penuh bagi semua konfigurasi perangkat.

Bahan

  • screenOrientation: Setelan manifes aplikasi yang memungkinkan Anda menentukan respons aplikasi terhadap perubahan orientasi perangkat
  • Jetpack WindowManager: Library yang memungkinkan Anda menentukan ukuran dan rasio aspek jendela aplikasi; mendukung kompatibilitas mundur hingga API level 14
  • Activity#setRequestedOrientation(): Metode yang dapat Anda gunakan untuk mengubah orientasi aplikasi saat runtime

Langkah

Ringkasan

Buat aplikasi agar mampu menangani perubahan orientasi secara default di manifes aplikasi. Saat runtime, tentukan ukuran jendela aplikasi. Jika jendela aplikasi kecil, batasi orientasi aplikasi dengan mengganti setelan orientasi manifes.

1. Menentukan setelan orientasi dalam manifes aplikasi

Setel elemen screenOrientation dari manifes aplikasi ke fullUser. Jika pengguna belum mengunci rotasi berbasis sensor, aplikasi Anda akan mendukung semua orientasi perangkat.

<activity
    android:name=".MyActivity"
    android:screenOrientation="fullUser">

2. Menentukan ukuran layar

Dengan manifes yang disetel untuk mendukung semua orientasi yang diizinkan pengguna, Anda dapat menentukan orientasi aplikasi secara terprogram berdasarkan ukuran layar.

Gunakan metode WindowMetricsCalculator#computeMaximumWindowMetrics() library Jetpack WindowManager untuk mendapatkan ukuran layar perangkat sebagai objek WindowMetrics. Metrik jendela dapat dibandingkan dengan class ukuran jendela untuk menentukan kapan harus membatasi orientasi.

Class ukuran jendela menyediakan titik henti sementara antara layar kecil dan besar. Dimensi yang lebih kecil (lebar atau tinggi) dari ponsel biasa kurang dari 600 dp; dimensi tablet dan perangkat foldable layar besar yang lebih kecil, lebih besar dari 600 dp.

Gunakan nilai dp titik henti sementara untuk menentukan ukuran layar:

Kotlin

/** Determines whether the device has a compact screen. **/
fun compactScreen(): Boolean {
    val screenMetrics = WindowMetricsCalculator
                        .getOrCreate()
                        .computeMaximumWindowMetrics(this)
    val shortSide = min(screenMetrics.bounds.width(),
                        screenMetrics.bounds.height())
    return shortSide / resources.displayMetrics.density < 600
}

Java

/** Determines whether the device has a compact screen. **/
public boolean compactScreen() {
    WindowMetrics screenMetrics = WindowMetricsCalculator
                                  .getOrCreate()
                                  .computeMaximumWindowMetrics(this);
    int shortSide = Math.min(screenMetrics.getBounds().width(),
                             screenMetrics.getBounds().height());
    return shortSide / getResources().getDisplayMetrics().density < 600;
}
    Catatan:
  • Contoh di atas diimplementasikan sebagai metode aktivitas; sehingga aktivitas tersebut dihilangkan referensinya sebagai this dalam argumen computeMaximumWindowMetrics().
  • Metode computeMaximumWindowMetrics() digunakan sebagai pengganti computeCurrentWindowMetrics() karena aplikasi dapat diluncurkan dalam mode multi-aplikasi, yang mengabaikan setelan orientasi layar. Anda tidak perlu menentukan ukuran jendela aplikasi dan mengganti setelan orientasi, kecuali jika jendela aplikasi adalah keseluruhan layar perangkat.

Lihat WindowManager untuk mengetahui petunjuk tentang mendeklarasikan dependensi agar metode computeMaximumWindowMetrics() tersedia di aplikasi Anda.

3. Mengganti setelan manifes aplikasi

Setelah menentukan bahwa perangkat memiliki ukuran layar yang kecil, Anda dapat memanggil Activity#setRequestedOrientation() untuk mengganti setelan screenOrientation manifes:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    requestedOrientation = if (compactScreen())
        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT else
        ActivityInfo.SCREEN_ORIENTATION_FULL_USER
    ...
}

Java

@Override
protected void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstanceState);
    if (compactScreen()) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER);
    }
    ...
}

Dengan menambahkan logika ke metode onCreate(), Anda dapat memperoleh ukuran layar dan mengganti setelan orientasi setiap kali aktivitas dibuat, seperti setelah rotasi perangkat atau saat perangkat foldable dilipat atau dibentangkan.

Hasil

Aplikasi Anda akan tetap dalam orientasi potret di layar kecil, apa pun rotasi perangkatnya. Pada perangkat layar besar, aplikasi akan mendukung orientasi lanskap dan potret.

Referensi lainnya

Untuk bantuan dalam melakukan upgrade aplikasi Anda agar mendukung semua konfigurasi ponsel sepanjang waktu, lihat artikel berikut: