Android O tidak lagi menggunakan TYPE_SYSTEM_OVERLAY dan digantikan dengan TYPE_APPLICATION_OVERLAY, sehingga aplikasi yang terhampar di atas bilah status menjadi rusak.
Sedikit postingan yang menguraikan fitur-fitur baru yang dapat dilihat pengguna ditemukan di Android O mulai melambat karena pengguna memiliki waktu berminggu-minggu untuk menguji perangkat lunak di perangkat mereka. Namun, ada banyak sekali perubahan yang dilakukan secara diam-diam, namun perlahan terungkap. Kami memposting tentang satu perubahan beberapa hari yang lalu tentang perangkat Nexus dan Pixel yang menjalankan Android O mengadopsi SD CardFS. Namun hari ini, kami ingin membahas perubahan yang akan memengaruhi pengembang aplikasi tertentu, khususnya yang memiliki aplikasi tersebut hamparan di atas bilah status. Aplikasi-aplikasi ini sepertinya rusak di Pratinjau Pengembang Android O, yang pada pandangan pertama mungkin Anda anggap sebagai bug sederhana, namun jika mempelajari lebih dalam dokumentasi referensi, hal ini mungkin saja terjadi perubahan yang dimaksudkan oleh Google.
Android O Merusak Hamparan Bilah Status
Salah satu hal favorit saya tentang Android adalah penyesuaiannya. Pengguna yang di-root atau menjalankan ROM khusus dapat menentukan tema bilah status sistem mereka secara asli tanpa batasan, tetapi jika perangkat Anda tidak di-root, Anda memiliki lebih sedikit opsi yang tersedia untuk Anda. Untungnya, ada banyak aplikasi di Google Play Store yang memungkinkan Anda mengubah tampilan bilah status pada tingkat dasar. Hal ini dimungkinkan berkat kombinasi cerdas dari System Overlay Windows untuk menampilkan bilah status khusus di atas yang sudah ada, Pendengar Notifikasi untuk menampilkan notifikasi, dan secara opsional Layanan Aksesibilitas untuk memungkinkan pewarnaan kustom secara kontekstual status bar.
Dua tangkapan layar di atas menunjukkan seperti apa tampilan bilah notifikasi saya saat menggunakan salah satu dari banyak aplikasi hamparan bilah status yang tersedia di Play Store. Tangkapan layar ini diambil pada Huawei Mate 9 yang tidak di-root dan menjalankan EMUI 5.0. Bagi Anda yang belum familiar dengan EMUI, status barnya tidak terlihat seperti gambar di atas. Sebaliknya, tampilannya seperti ini:
Jika Anda tidak keberatan dengan tampilan bilah status stok Anda, maka aplikasi seperti Status atau Bilah Status Bahan adalah anugerah. Namun jika, atau saat perangkat Anda diperbarui ke Android O, aplikasi ini mungkin tidak lagi berfungsi. Berikut tampilan kedua aplikasi yang sama di Google Pixel yang menjalankan Pratinjau Pengembang Android O:
Daripada overlay yang memblokir bilah status asli, ini terlihat seperti overlay tumpang tindih dengan bilah status asli yang menghasilkan kekacauan besar.
Sayangnya, hal ini secara efektif membuat aplikasi seperti ini tidak berguna. Dan bukan hanya aplikasi tema bilah status biasa yang terpengaruh oleh hal ini - semua aplikasi yang memerlukan overlay untuk ditampilkan di atas bilah status akan terpengaruh.
Berikut adalah daftar beberapa aplikasi populer yang mungkin dianggap tidak berguna:
- Status (500.000 - 1.000.000 pemasangan)
- Bilah Status Bahan (1.000.000 - 5.000.000 pemasangan)
- Alat Keren - Statistik Sistem (500.000 - 1.000.000 pemasangan)
- telekin (50.000 - 100.000 pemasangan)
- Bersihkan Bilah Status (100.000 - 500.000 pemasangan)
- inti kecil (100.000 - 500.000 pemasangan)
Dan daftar beberapa aplikasi yang dapat berfungsi, namun tidak dapat lagi ditampilkan di atas bilah status (membatasi fungsi sebelumnya):
- Senja (5.000.000 - 10.000.000 pemasangan)
- Perhatian (100.000 - 500.000 pemasangan)
- Monitor Sumber Daya Mini (50.000 - 100.000 pemasangan)
- Monitor Jaringan Mini (1.000.000 - 5.000.000 pemasangan)
Masih banyak lagi aplikasi di Play Store yang menggunakan semacam overlay di atas bilah status, namun Anda sudah tahu bahwa perubahan seperti itu akan memengaruhi banyak aplikasi yang berpotensi digunakan oleh jutaan orang pengguna. Jadi apa yang terjadi di sini?
TYPE_SYSTEM_OVERLAY tidak digunakan lagi
Dengan setiap versi baru Android, Google memperkenalkan dan menghentikan (ditetapkan sebagai usang dan akan dihapus) berbagai fitur. Kali ini fitur yang ada pada talenan adalah TYPE_SYSTEM_OVERLAY. Mengutip halaman referensi untuk apa fitur ini ditawarkan kepada pengembang:
TYPE_SYSTEM_OVERLAY
Jenis jendela: jendela overlay sistem, yang perlu ditampilkan di atas segalanya. Jendela ini tidak boleh mengambil fokus masukan, atau akan mengganggu pengaman tombol. Dalam sistem multipengguna hanya ditampilkan di jendela pengguna pemilik.
Intinya, jenis jendela ini memungkinkan aplikasi menggambar di atas elemen apa pun di layar - termasuk bilah status. Namun, mulai Android O, jenis jendela ini sudah tidak digunakan lagi. Untuk aplikasi non-sistem, Google menyarankan agar pengembang menggunakan TYPE_APPLICATION_OVERLAY. Mengutip halaman referensi untuk apa yang dilakukan tipe jendela baru ini:
TYPE_APPLICATION_OVERLAY
Jenis jendela: Jendela overlay aplikasi ditampilkan di atas semua jendela aktivitas (tipe di antaranya
FIRST_APPLICATION_WINDOW
DanLAST_APPLICATION_WINDOW
) tetapi di bawah jendela sistem penting seperti bilah status atau IME.Sistem dapat mengubah posisi, ukuran, atau visibilitas jendela ini kapan saja untuk mengurangi kekacauan visual bagi pengguna dan juga mengelola sumber daya.
Sistem akan menyesuaikan pentingnya proses dengan tipe jendela ini untuk mengurangi kemungkinan pembunuh memori rendah mematikannya.
Dalam sistem multi-pengguna hanya ditampilkan di layar pengguna pemilik.
Seperti yang Anda lihat, jenis jendela baru ini memungkinkan aplikasi untuk melapisi konten di atas semua jendela aktivitas lainnya kecuali "jendela sistem penting seperti bilah status atau IME" (IME mengacu pada keyboard). Ini bagus untuk aplikasi seperti Facebook Messenger, karena chathead yang disediakan oleh aplikasi tersebut tidak memiliki tujuan untuk ditempatkan di atas bilah status, tetapi ini berdampak negatif pada sebagian besar aplikasi yang saya sebutkan sebelumnya.
Selain itu, saat ini tampaknya belum ada solusi yang dapat digunakan oleh pengembang. Mungkin ada yang mengira bahwa, untuk menghindari masalah ini di Android O, pengembang cukup membuat aplikasi mereka untuk menargetkan SDK 25 (Android 7.1.1). Namun, seperti yang diutarakan oleh pengembang Status di Reddit, Google punya diganti TYPE_SYSTEM_OVERLAY dengan TYPE_APPLICATION_OVERLAY, dan perubahannya adalah independen dari SDK target Versi: kapan. Pengembang yang menggunakan TYPE_SYSTEM_OVERLAY saat ini harus menggunakan TYPE_APPLICATION_OVERLAY untuk menjaga kompatibilitas, oleh karena itu, apa pun versi SDK target yang menjadi dasar aplikasi tertentu, aplikasi tersebut dapat tidak lagi menggunakan TYPE_SYSTEM_OVERLAY di Android O.
Apa yang bisa dilakukan mengenai hal ini?
Belum diketahui secara pasti alasan Google melakukan perubahan ini karena mereka belum memberikan penjelasan resminya. Dugaan saya adalah ini merupakan upaya untuk meningkatkan keamanan di Android dengan mencegah pengguna yang tidak menaruh curiga menginstal aplikasi yang memblokir atau mengganti bilah status mereka secara tidak sengaja. Sayangnya, perubahan ini menyebabkan banyak aplikasi sah yang menggunakan TYPE_SYSTEM_OVERLAY dalam baku tembak.
Pengembang yang memanfaatkan fitur ini telah membuka laporan bug pada Issue Tracker Android (#260787 Dan #36574245) untuk memprotes perubahan tersebut dan meminta API alternatif, namun seorang Googler mengomentari pelacak dengan pernyataan berikut:
Status: Tidak Akan Diperbaiki (Perilaku yang Diinginkan)
Kami telah menindaklanjuti dengan tim produk dan teknik dan mendapat saran agar pengembang dapat menggunakan aktivitas SHOW_WHEN_LOCKED untuk tampilkan saat perangkat terkunci, tetapi sengaja tidak dapat ditampilkan lagi di layar kunci / di atas bayangan notifikasi
Untuk saat ini, nampaknya para pengembang ini kurang beruntung, karena pengembang telah menunjukkan bahwa FLAG_SHOW_WHEN_LOCKED masih tidak mengizinkan jendela untuk dihamparkan di atas bilah status. Tidak jelas apa yang dapat dilakukan oleh pengembang aplikasi ini kecuali berdoa agar Google mengubah keadaan, atau mengungkit hal tersebut.
Karena ini hanyalah Pratinjau Pengembang pertama untuk Android O, Google masih dapat mengubahnya keberatan dan menyediakan fungsi ini untuk aplikasi yang tidak menargetkan Android O, atau untuk dipulihkan oleh Google TYPE_SYSTEM_OVERLAY. Namun jika keadaan tetap seperti sekarang, Anda bisa cium selamat tinggal aplikasi ini. Dan itu akan sangat disayangkan.
Terima kasih kepada Eli Irvin karena telah menguji banyak aplikasi ini untuk saya!