Menentukan dan Memantau Status dan Tipe Pasang ke Dok

Perangkat Android bisa dipasang ke beberapa jenis dok yang berbeda. Ini termasuk dok untuk di mobil atau rumah dan dok digital versus analog. Status dok ini biasanya tertaut erat dengan status pengisian daya karena banyak dok yang menyediakan listrik ke perangkat yang dihubungkan ke dok.

Cara status pasang ke dok ponsel memengaruhi tingkat pembaruan tergantung pada aplikasi Anda. Anda bisa memilih meningkatkan frekuensi pembaruan aplikasi pusat olahraga bila ponsel berada di dok desktop, atau menonaktifkan pembaruan sama sekali jika perangkat dipasang ke dok untuk mobil. Sebaliknya, Anda dapat memilih memaksimalkan pembaruan saat berada di pasang di dok mobil jika layanan latar belakang sedang memperbarui kondisi lalu lintas.

Status pasang ke dok juga menyiarkan Intent secara terus-menerus, sehingga Anda bisa melakukan kueri apakah perangkat berada di dok atau tidak, dan jika di dok, di dok jenis apa.

Menentukan Status Pasang ke Dok Saat Ini

Detail status-pasang ke dok disertakan sebagai ekstra dalam siaran terus-menerus dari aksi ACTION_DOCK_EVENT. Karena terus-menerus, Anda tidak perlu mendaftarkan BroadcastReceiver. Anda tinggal memanggil registerReceiver() yang meneruskan null sebagai penerima siaran seperti yang ditampilkan dalam cuplikan berikutnya.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

Anda bisa mengekstrak status pasang ke dok saat ini dari ekstra EXTRA_DOCK_STATE:

int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Menentukan Tipe Pasang ke Dok Saat Ini

Jika perangkat telah dipasang ke dok, maka bisa dipasang ke salah satu dari empat tipe dok berbeda:

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

Perhatikan, dua opsi yang terakhir disebut hanya diperkenalkan pada Android di API Level 11, jadi sebaiknya periksa ketiganya jika Anda hanya berminat dengan tipe dok, bukannya khusus digital atau analog.

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 Status atau Tipe Pasang ke Dok

Bila perangkat dipasang ke atau dilepas dari dok, aksi ACTION_DOCK_EVENT akan disiarkan. Untuk memantau perubahan status pasang ke dok perangkat, cukup daftarkan penerima siaran dalam manifes aplikasi Anda seperti yang ditampilkan dalam cuplikan di bawah ini:

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

Anda bisa mengekstrak tipe dan status pasang ke dok dalam implementasi penerima dengan menggunakan teknik yang sama seperti yang dijelaskan dalam langkah sebelumnya.