Mendukung multi-aplikasi

Di Android 7.0 dan yang lebih tinggi, perangkat dapat menampilkan beberapa aplikasi secara bersamaan menggunakan multi-aplikasi. Android mendukung tiga konfigurasi multi-aplikasi:

  • Format bebas: Memungkinkan pengguna mengubah ukuran panel aktivitas secara dinamis dan menampilkan lebih dari dua aplikasi di layar. Untuk mode jendela desktop, pengguna dapat membuat jendela bentuk bebas di desktop yang menawarkan interaksi gaya desktop.
  • Layar terpisah: Implementasi multi-aplikasi default, yang menyediakan dua panel aktivitas tempat pengguna dapat menempatkan aplikasi.
  • Picture-in-picture (PiP): Memungkinkan perangkat yang menjalankan Android memutar konten video di jendela kecil saat pengguna berinteraksi dengan aplikasi lain.

Persyaratan perangkat multi-aplikasi

Dukungan multi-aplikasi diaktifkan secara default di Android 7.0 dan yang lebih tinggi. Untuk menonaktifkannya, tetapkan tanda config_supportsMultiWindow ke false dalam file config.xml perangkat Anda.

Multi-aplikasi dinonaktifkan secara default di semua perangkat dengan RAM rendah (perangkat yang mendeklarasikan ActivityManager.isLowRam). Perangkat dengan RAM rendah mengabaikan nilai tanda config_supportsMultiWindow.

Freeform

Penampilan jendela bentuk bebas memungkinkan pengguna membuat jendela yang dapat diubah ukurannya secara bebas. Windowing freeform adalah prasyarat untuk mode jendela desktop. Persyaratan perangkat untuk mengaktifkan windowing bentuk bebas adalah sebagai berikut:

  • Aktifkan tanda config_supportsMultiWindow.
  • Aktifkan pengelolaan jendela bentuk bebas dengan salah satu cara berikut:
    • Aktifkan tanda config_freeformWindowManagement di config.xml:
      <feature name="android.software.freeform_window_management" />
    • Sertakan kode berikut dalam makefile perangkat:
      PRODUCT_COPY_FILES += \
      frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml

Di Android 16, OEM dapat mendukung mode jendela desktop di perangkat mereka untuk konfigurasi multi-aplikasi freeform menggunakan Aktifkan mode jendela desktop.

Mode jendela desktop

Mode jendela desktop menyediakan ruang kerja untuk multitasking di layar besar, yang dibangun di atas jendela format bebas. Ruang kerja ada di samping layar penuh, dengan perilaku dan afordans UI tambahan yang memberi pengguna pengalaman multitasking yang lebih fleksibel:

  • Interaksi keyboard atau mouse: Mendukung interaksi yang mengutamakan sentuhan dan interaksi yang mengutamakan keyboard atau mouse.
  • Jendela bentuk bebas: Menjalankan aplikasi di jendela yang dapat diubah ukurannya dan dipindahkan dengan kontrol dan kolom caption jendela.
  • Taskbar yang ditingkatkan: Memberikan akses mudah ke aplikasi yang sedang berjalan dan disematkan.
  • Pengoptimalan tampilan eksternal: Mengubah monitor yang terhubung menjadi lingkungan desktop untuk perangkat yang didukung.
  • Desktop virtual: Memungkinkan pengguna mengatur aplikasi di beberapa ruang kerja.

Penuhi prasyarat berikut untuk mengonfigurasi perangkat untuk tampilan jendela desktop:

  • Aktifkan tanda berikut:
  • UI Sistem memerlukan layar dengan lebar minimal 600 dp. Mode jendela desktop mungkin tidak berfungsi seperti yang diharapkan pada layar yang lebih kecil.
  • Perangkat tidak boleh berupa perangkat dengan RAM rendah. ActivityManager.isLowRam harus menampilkan false, karena perangkat dengan RAM rendah tidak memenuhi syarat untuk fitur multi-aplikasi apa pun.

Tabel berikut mencantumkan konfigurasi yang dapat digunakan untuk mengonfigurasi perangkat untuk mode jendela desktop, bergantung pada ukuran layar dan cara perangkat akan digunakan:

Mode Perangkat genggam khusus layar penuh Proyeksi perangkat genggam yang mengutamakan layar penuh ke layar terhubung Layar besar yang mengutamakan layar penuh dan diperluas ke layar yang terhubung Layar besar yang mengutamakan mode jendela desktop
Contoh faktor bentuk Ponsel genggam Ponsel genggam yang mendukung HDMI ke layar eksternal Tablet yang mendukung HDMI ke layar eksternal Tablet dengan keyboard yang mendukung HDMI ke layar eksternal
Pengalaman layar internal Layar penuh, layar terpisah, PiP, bentuk bebas non-desktop didukung Mendukung layar penuh, layar terpisah, PiP Mode jendela desktop yang mendukung layar penuh, layar terpisah, dan PiP melalui desktop terpisah Mode jendela desktop adalah mode jendela default (mendukung desktop terpisah); pengguna dapat masuk ke mode jendela desktop layar penuh atau sentuh melalui desktop terpisah
Pengalaman layar terhubung Mencerminkan hanya tampilan internal Mode jendela desktop hanya di layar terhubung Tampilan desktop memperluas desktop virtual; tersedia di layar internal Tampilan desktop memperluas desktop virtual; tersedia di layar internal
Setelan konfigurasi
config_supportsMultiWindow true true true true
config_freeformWindowManagement true true true true
config_isDesktopModeSupported false true true true
config_canInternalDisplayHostDesktops Diabaikan false true true
config_enterDesktopByDefaultOnFreeformDisplay Diabaikan false false true

config_isDesktopModeSupported

Flag overlay config config_isDesktopModeSupported adalah flag tingkat teratas untuk mengaktifkan mode jendela desktop. Jika tidak diaktifkan, semua setelan konfigurasi lainnya akan diabaikan. Tetapkan ke true di config.xml:

<!-- Globally enable Desktop windowing logic -->
    <bool name="config_isDesktopModeSupported">true</bool>

Jika config_isDesktopModeSupported adalah true, sistem akan otomatis memperlakukan layar eksternal yang memenuhi syarat (seperti yang terhubung melalui DisplayPort atau HDMI) sebagai kandidat untuk mode jendela desktop. Tampilan harus dianggap memenuhi syarat oleh Pengelola Jendela (setidaknya publik dan tepercaya, lihat Mode jendela desktop). Secara default, sistem mencoba meluncurkan tugas dalam mode freeform di layar ini.

config_canInternalDisplayHostDesktops

Flag overlay konfigurasi config_canInternalDisplayHostDesktops mengaktifkan tampilan desktop di layar internal perangkat. Tetapkan ke true di config.xml:

<!-- Allow the primary internal display to host desktop sessions -->
    <bool name="config_canInternalDisplayHostDesktops">true</bool>

Mode jendela desktop berfungsi paling baik di perangkat layar besar seperti tablet, dibandingkan dengan ponsel genggam yang lebih kecil. Jika tidak diaktifkan, mode jendela desktop hanya didukung di layar eksternal (dengan asumsi perangkat mendukung HDMI).

config_enterDesktopByDefaultOnFreeformDisplay

Flag overlay config config_enterDesktopByDefaultOnFreeformDisplay menetapkan mode jendela desktop sebagai mode tampilan default di layar internal perangkat. Jika tidak diaktifkan, layar penuh adalah mode jendela default, dengan desktop yang ada bersamaan. Tetapkan ke true di config.xml:

<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
    <bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>

Mengaktifkan batas tugas

Untuk mengonfigurasi jumlah maksimum tugas yang didukung dalam mode jendela desktop, tetapkan flag overlay konfigurasi config_maxDesktopWindowingActiveTasks di config.xml ke jumlah maksimum tugas yang didukung. Untuk mendukung jumlah tugas yang tidak terbatas, tetapkan nilai tanda ke 0:

<!-- Maximum number of tasks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingActiveTasks">4</integer>

Mengaktifkan batas desktop virtual

Untuk mengonfigurasi jumlah maksimum desktop virtual yang didukung dalam mode jendela desktop, tetapkan flag overlay konfigurasi config_maxDesktopWindowingDesks di config.xml ke jumlah maksimum desktop virtual yang didukung. Untuk mendukung jumlah meja yang tidak terbatas, tetapkan nilai tanda ke 0:

<!-- Maximum number of virtual desks supported in desktop windowing -->
      <integer name="config_maxDesktopWindowingDesks">4</integer>

Layar terpisah

Pengalaman default multi-aplikasi adalah mode layar terpisah, dengan UI Sistem dibagi di tengah perangkat dalam mode potret atau lanskap. Pengguna dapat mengubah ukuran jendela dengan menarik garis pembagi dari sisi ke sisi atau dari atas ke bawah, bergantung pada orientasi perangkat.

Setelah mengaktifkan layar terpisah, produsen perangkat dapat memilih untuk mengaktifkan bentuk bebas atau PiP.

Android 8.0 dan yang lebih tinggi meningkatkan kualitas layar terpisah dengan memadatkan peluncur saat pengguna mengetuk Beranda. Untuk mengetahui detail implementasinya, lihat Interaksi layar terpisah.

Picture-in-picture

Setelah mengaktifkan mode multi-aplikasi dengan tanda config_supportsMultiWindow, produsen perangkat dapat mendukung picture-in-picture, yang memungkinkan pengguna menonton video sambil menjelajahi aktivitas lain. Meskipun fitur ini ditujukan untuk perangkat Android TV, jenis perangkat lain mungkin mendukung fitur ini.

Untuk mendukung PiP, aktifkan fitur sistem PackageManager#FEATURE_PICTURE_IN_PICTURE di /android/frameworks/base/core/java/android/content/pm/PackageManager.java.

Untuk mengetahui detail penerapan PiP selengkapnya untuk perangkat yang menjalankan Android 8.0 dan yang lebih tinggi, lihat Picture-in-picture.

UI Sistem

Mendukung semua UI Sistem standar sesuai dengan Verifikasi mode multi-aplikasi.

Aplikasi

Untuk mendukung mode multi-aplikasi bagi aplikasi yang sudah dimuat sebelumnya, lihat Mendukung mode multi-aplikasi.

Validasi

Untuk memvalidasi penerapan multi-aplikasi, jalankan CTS terkait dan ikuti Verifikasi mode multi-aplikasi.

Versi Android Pengujian CTS
7,0 /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts
8.0 /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts
9.0 /platform/cts/tests/framework/base/activitymanager/src/android/server/am
Android 10 dan yang lebih tinggi /platform/cts/tests/framework/base/windowmanager/src/android/server/wm