The Android Developer Challenge is back! Submit your idea before December 2.

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 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, Anda cukup memanggil registerReceiver(), yang akan 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;