Menentukan dan memantau jenis dan status terpasang ke dok

Perangkat yang didukung Android dapat dipasang ke berbagai jenis dok. Ini termasuk dok mobil, dok rumah, dan dok digital atau analog. Status terpasang ke dok biasanya terkait erat dengan status pengisian daya karena banyak dok menyediakan daya ke perangkat yang dipasang ke dok.

Aplikasi Anda memengaruhi kecepatan update ponsel saat berada di dok. Anda dapat meningkatkan frekuensi update aplikasi berita olahraga saat berada di dok desktop, atau menonaktifkan update sepenuhnya jika perangkat dipasang ke dok untuk mobil. Sebaliknya, Anda dapat memaksimalkan update saat ponsel dipasang di dok mobil jika layanan latar belakang mengupdate kondisi lalu lintas.

Status dok juga disiarkan sebagai Intent melekat, sehingga Anda dapat membuat kueri apakah perangkat terpasang di 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 dapat 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 dipasang ke dok, perangkat dapat dipasang ke salah satu dari empat jenis dok yang berbeda berikut:

  • Mobil
  • Meja
  • Desktop Virtual (Analog)
  • Meja Kelas Atas (Digital)

Dua opsi terakhir hanya diperkenalkan di Android API level 11. Jadi, sebaiknya periksa ketiga jenis desktop virtual tersebut 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;