Perangkat Android dapat dipasang ke berbagai jenis dok. Ini termasuk dok mobil, dok rumah, dan dok digital atau analog. Status doknya adalah biasanya terkait erat dengan status pengisian daya, karena banyak dok menyediakan daya untuk perangkat yang dipasang ke dok.
Aplikasi Anda memengaruhi kecepatan update ponsel saat berada di dok. Anda dapat meningkatkan frekuensi pembaruan aplikasi berita olahraga saat berada di dok desktop, atau menonaktifkan pembaruan sepenuhnya jika perangkat dipasang ke dok di mobil. Sebaliknya, Anda dapat memaksimalkan update saat dipasang ke dok mobil jika layanan latar belakang Anda diupdate kondisi lalu lintas.
Status dok juga disiarkan sebagai sticky
Intent
,
memungkinkan Anda untuk menanyakan apakah perangkat dipasang ke dok dan di dok jenis apa
begitu.
Menentukan status terpasang ke dok saat ini
Detail status terpasang ke dok disertakan sebagai tambahan dalam
siaran melekat
ACTION_DOCK_EVENT
tindakan. Karena melekat, Anda dapat memanggil
registerReceiver()
,
meneruskan null
sebagai penerima siaran. Cuplikan berikut
menunjukkan cara menyelesaikan proses ini:
Kotlin
val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter -> context.registerReceiver(null, ifilter) }
Java
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter);
Anda bisa mengekstrak status terpasang ke dok saat ini dari
Tambahan EXTRA_DOCK_STATE
:
Kotlin
val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1 val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
Java
int dockState -1; if (dockStatus != null) { dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1); } boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
Menentukan jenis dok saat ini
Jika perangkat dipasang ke dok, perangkat dapat dipasang ke salah satu dari empat berbagai jenis dok:
- Car
- Meja
- Desktop Virtual (Analog)
- Meja Kelas Atas (Digital)
Dua opsi terakhir hanya diperkenalkan di Android API level 11, jadi praktik yang baik untuk memeriksa ketiga jenis desktop tersebut jenis dok, bukan dalam bentuk digital atau analog:
Kotlin
val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK || dockState == EXTRA_DOCK_STATE_HE_DESK
Java
boolean isCar = dockState == EXTRA_DOCK_STATE_CAR; boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK || dockState == EXTRA_DOCK_STATE_HE_DESK;