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.

Bagaimana status ponsel terpasang ke dok memengaruhi frekuensi update bergantung pada aplikasi Anda. Anda bisa memilih untuk mempercepat frekuensi update aplikasi pusat olahraga ketika ponsel dipasang ke dok desktop, atau menonaktifkan pembaruan sepenuhnya jika perangkat dipasang ke dok di mobil. Sebaliknya, Anda bisa memilih untuk memaksimalkan pembaruan saat ponsel dipasang di dok mobil jika layanan latar belakang mengupdate kondisi lalu lintas.

Keadaan terpasang di dok juga menyiarkan Intent permanen, yang memungkinkan Anda menanyakan apakah perangkat dipasang ke dok atau tidak, dan jika ya, pada jenis dok 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, Anda tidak perlu mendaftarkan BroadcastReceiver. Cukup panggil registerReceiver() yang meneruskan null sebagai penerima siaran seperti dalam cuplikan berikut.

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;
    

Memantau perubahan dalam jenis atau status terpasang ke dok

Setiap kali perangkat dipasang ke dok atau dilepas, tindakan ACTION_DOCK_EVENT akan disiarkan. Untuk memantau perubahan dalam keadaan terpasang ke dok pada perangkat, cukup daftarkan penerima siaran dalam manifes aplikasi Anda seperti dalam cuplikan di bawah ini:

<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>

Anda bisa mengekstrak jenis dan status terpasang ke dok dalam implementasi penerima menggunakan teknik seperti yang dijelaskan dalam langkah sebelumnya.