Menentukan dan memantau jenis dan status terpasang ke dok

Perangkat Android bisa dipasang ke beberapa jenis dok. Termasuk dok untuk mobil atau di rumah serta dok digital versus analog. Status terpasang ke dok ini biasanya sangat berkaitan dengan keadaan pengisian daya karena beberapa dok menyediakan daya ke perangkat yang dipasang ke dok.

Pengaruh status dok ponsel terhadap kecepatan update bergantung pada aplikasi Anda. Anda bisa memilih meningkatkan frekuensi update aplikasi pusat olahraga jika ponsel berada di dok desktop, atau menonaktifkan update sama sekali jika perangkat dipasang di dok mobil. Sebaliknya, Anda bisa memilih untuk memaksimalkan update saat ponsel dipasang di dok mobil jika layanan latar belakang mengupdate kondisi lalu lintas.

Keadaan terpasang di dok juga disiarkan sebagai Intent permanen, yang memungkinkan Anda menanyakan apakah perangkat dipasang ke dok atau tidak, dan jika ya, di dok jenis apa.

Menentukan status terpasang ke dok saat ini

Detail status terpasang ke dok disertakan sebagai tambahan dalam siaran permanen dari tindakan ACTION_DOCK_EVENT. Karena permanen, cukup panggil 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 ekstra 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 = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
    boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
    

Menentukan jenis dok saat ini

Jika dipasang ke dok, perangkat bisa dipasang ke salah satu dari empat jenis dok yang berbeda:

  • Mobil
  • Meja
  • Meja Biasa (Analog)
  • Meja Canggih (Digital)

Perlu diingat bahwa dua opsi terakhir di atas hanya diperkenalkan pada Android di API level 11, jadi sebaiknya cukup periksa tiga opsi teratas jika Anda hanya tertarik dengan jenis dok, bukan tentang fitur digital atau analognya.

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;