Yuvaya yerleştirme durumunu ve türünü belirleme ve izleme

Android destekli cihazlar farklı yuvalara yerleştirilebilir. Araba, ev ve dijital ya da analog tabancalar bu kapsamdadır. Birçok yuva, yerleştirilmiş cihazlara güç sağladığından yuva durumu genellikle şarj durumuna yakından bağlıdır.

Uygulamanız yuva durumunda telefonun güncelleme hızını etkiler. Bir spor haberi uygulamasının güncelleme sıklığını, masaüstü dock'tayken artırabilir veya cihaz araba dock'undayken güncellemelerinizi tamamen devre dışı bırakabilirsiniz. Bunun tam tersini yaparak, arka plan hizmetiniz trafik durumunu güncelliyorsa araba şarjdayken güncellemelerinizi en üst düzeye çıkarabilirsiniz.

Yerleşik durum da yapışkan Intent olarak yayınlanır. Bu sayede, cihazın yerleşik olup olmadığını ve yerleşikse hangi tür bir yuvaya yerleştirildiğini sorgulayabilirsiniz.

Mevcut yerleştirme durumunu belirleme

Yuva durumu ayrıntıları, ACTION_DOCK_EVENT işleminin yapışkan yayınına ekstra olarak dahil edilir. Sabit olduğu için registerReceiver() yöntemini çağırarak yayın alıcı olarak null ayarını iletebilirsiniz. Aşağıdaki snippet'te bu işlemin nasıl tamamlanacağı gösterilmektedir:

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);

Mevcut yuvaya yerleştirme durumunu EXTRA_DOCK_STATE ekstra programından ayıklayabilirsiniz:

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;

Mevcut bağlantı noktası türünü belirleme

Bir cihaz yuvaya yerleştirilmişse aşağıdaki dört farklı yuva türünden birine yerleştirilebilir:

  • Otomobil
  • Masa
  • Düşük kaliteli (analog) masa
  • İleri teknoloji (Dijital) masa

Son iki seçenek yalnızca Android API düzey 11'de kullanıma sunulmuştur. Bu nedenle, özel olarak dijital veya analog olmak yerine yalnızca yuva türüyle ilgilendiğiniz durumlarda üç masa türünü de kontrol etmeniz önerilir:

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;