Pendahuluan
Panel Cepat (Quick Settings) pada Android memungkinkan pengguna mengakses fungsi-fungsi penting dengan cepat. Secara standar, Android menyediakan tombol tombol seperti Wi Fi, Bluetooth, atau Mode Pesawat. Bagi pengguna yang menginginkan kontrol lebih, Android menyediakan cara menambahkan tombol kustom melalui TileService. Artikel ini menjelaskan langkah langkahnya secara lengkap.
Prasyarat
- Android Studio (versi terbaru direkomendasikan).
- Perangkat atau emulator dengan Android 7.0 (API 24) ke atas.
- Pengetahuan dasar tentang Java/Kotlin dan Android Manifest.
1. Membuat Proyek Baru
Mulailah dengan membuat proyek Android baru:
- Buka Android Studio File > New > New Project.
- Pilih template Empty Activity dan beri nama, misalnya
QuickTileDemo. - Pastikan bahasa yang dipilih
JavaatauKotlin(contoh menggunakan Kotlin). - Tekan Finish dan tunggu proses build selesai.
2. Menambahkan Dependensi
Untuk menggunakan androidx versi terbaru, periksa build.gradle (Module) dan pastikan ada baris berikut:
implementation "androidx.core:core-ktx:1.12.0" Jika belum ada, tambahkan dan sinkronkan proyek.
3. Membuat Kelas TileService
Kelas ini akan menangani logika tombol kustom. Berikut contoh sederhana yang menyalakan atau mematikan Bluetooth:
package com.example.quicktiledemo import android.service.quicksettings.Tile import android.service.quicksettings.TileService import android.bluetooth.BluetoothAdapter class BluetoothTileService : TileService() { private val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter() override fun onStartListening() { super.onStartListening() updateTile() } override fun onClick() { super.onClick() toggleBluetooth() updateTile() } private fun toggleBluetooth() { bluetoothAdapter?.let { if (it.isEnabled) { it.disable() } else { it.enable() } } } private fun updateTile() { qsTile?.let { tile -> if (bluetoothAdapter?.isEnabled == true) { tile.state = Tile.STATE_ACTIVE tile.label = "Bluetooth ON" tile.icon = Icon.createWithResource(this, R.drawable.ic_bluetooth_on) } else { tile.state = Tile.STATE_INACTIVE tile.label = "Bluetooth OFF" tile.icon = Icon.createWithResource(this, R.drawable.ic_bluetooth_off) } tile.updateTile() } } } Catatan:
- Gunakan
android.service.quicksettings.TileServicesebagai superclass. - Metode
onStartListening()dipanggil ketika panel cepat dibuka. - Metode
onClick()dipanggil saat pengguna menekan tile.
4. Menyiapkan Ikon
Taruh file ikon (format .png atau .xml vektor) di res/drawable. Contoh:
ic_bluetooth_on.xmlic_bluetooth_off.xml
5. Mendaftarkan TileService di AndroidManifest
Tambahkan elemen service di dalam tag application:
<service android:name=".BluetoothTileService" android:label="Toggle Bluetooth" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE"/> </intent-filter> </service> Penting untuk menambahkan permission BIND_QUICK_SETTINGS_TILE agar sistem mengizinkan service ini muncul di panel cepat.
6. Meminta Izin yang Diperlukan
Untuk mengontrol Bluetooth, aplikasi harus memiliki izin berikut di AndroidManifest.xml:
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> Mulai Android 12, BLUETOOTH_CONNECT dan BLUETOOTH_ADVERTISE juga diperlukan. Tambahkan jika menargetkan API 31 ke atas.
7. Menambahkan Runtime Permission (Opsional)
Jika aplikasi menargetkan Android 6.0 (API 23) atau lebih tinggi, izin harus diminta pada saat runtime:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.BLUETOOTH_CONNECT), REQUEST_CODE) } 8. Menguji Tile
- Jalankan aplikasi di perangkat atau emulator.
- Buka panel cepat (tarik dua jari dari atas layar atau geser ke bawah dua kali).
- Jika tile belum muncul, pilih Edit (ikon pensil) lalu seret tile Toggle Bluetooth ke posisi yang diinginkan.
- Klik tile; Bluetooth harus beralih antara ON/OFF dan ikon serta label berubah sesuai status.
9. Menambahkan Lebih Banyak Tile
Anda dapat membuat tile tambahan dengan cara serupa. Berikut contoh singkat untuk mengaktifkan mode Do Not Disturb :
class DnDTileService : TileService() { private val notificationManager by lazy { getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager } override fun onClick() { super.onClick() val current = notificationManager.currentInterruptionFilter val newMode = if (current == NotificationManager.INTERRUPTION_FILTER_ALL) NotificationManager.INTERRUPTION_FILTER_PRIORITY else NotificationManager.INTERRUPTION_FILTER_ALL notificationManager.setInterruptionFilter(newMode) updateTile() } private fun updateTile() { qsTile?.apply { if (notificationManager.currentInterruptionFilter == NotificationManager.INTERRUPTION_FILTER_ALL) { state = Tile.STATE_ACTIVE label = "Do Not Disturb OFF" icon = Icon.createWithResource(this@DnDTileService, R.drawable.ic_dnd_off) } else { state = Tile.STATE_INACTIVE label = "Do Not Disturb ON" icon = Icon.createWithResource(this@DnDTileService, R.drawable.ic_dnd_on) } updateTile() } } } 10. Tips & Troubleshooting
- Tile tidak muncul? Pastikan aplikasi sudah ter install dan service terdaftar dengan permission yang tepat. Buka Settings Apps Quick Settings Tiles untuk memeriksa.
- Ikon tidak berubah? Periksa kembali ID resource ikon dan pastikan file berada di folder
drawable. - Masalah izin Bluetooth? Pada Android 13, gunakan izin
BLUETOOTH_CONNECTdan mintalah runtime permission. - Tile tidak memperbarui status secara otomatis? Panggil
qsTile.updateTile()setiap kali status berubah, biasanya di dalamonStartListening()danonClick().
Kesimpulan
Menambahkan tombol kustom ke Panel Cepat Android dapat meningkatkan produktivitas dan memberikan kontrol cepat atas fungsi-fungsi perangkat. Dengan memanfaatkan TileService, Anda dapat membuat tile apa pun dari mengontrol Bluetooth, Wi Fi, mode gelap, hingga menjalankan skrip khusus. Ikuti langkah langkah di atas, sesuaikan logika sesuai kebutuhan, dan bagikan tile Anda kepada pengguna lain melalui Play Store atau distribusi langsung.
Selamat bereksperimen!