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;