Perangkat Android dapat dipasang ke berbagai jenis dok. Dok ini mencakup dok mobil, dok rumah, dan dok digital atau analog. Status dok biasanya terkait erat dengan status pengisian daya karena banyak dok yang memberikan daya ke perangkat yang dipasang ke dok.
Aplikasi Anda memengaruhi kecepatan update ponsel dalam status terpasang ke dok. Anda dapat meningkatkan frekuensi update aplikasi berita olahraga saat aplikasi berada di dok desktop, atau menonaktifkan update sepenuhnya jika perangkat dipasang ke dok di mobil. Sebaliknya, Anda dapat memaksimalkan update saat mobil dipasang ke dok mobil jika layanan latar belakang memperbarui kondisi lalu lintas.
Status dok juga disiarkan sebagai
Intent
melekat,
yang memungkinkan Anda menanyakan apakah perangkat dipasang ke dok dan di dok jenis apa
jika demikian.
Menentukan status terpasang ke dok saat ini
Detail status dok disertakan sebagai tambahan dalam
siaran melekat dari
tindakan
ACTION_DOCK_EVENT
. Karena permanen, Anda dapat memanggil
registerReceiver()
,
dengan 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 tersebut dapat dipasang ke salah satu dari empat jenis dok yang berbeda berikut:
- Car
- Meja
- Desktop Low-End (Analog)
- Meja Kelas Atas (Digital)
Dua opsi terakhir hanya diperkenalkan di Android API level 11, jadi sebaiknya periksa ketiga jenis desktop jika Anda hanya tertarik dengan jenis dok, bukan digital atau analog secara khusus:
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;