Android destekli cihazlar farklı türde yuvalara yerleştirilebilir. Buna araba yuvaları, ev yuvaları ve dijital veya analog yuvalar dahildir. Birçok yuva, yuvaya yerleştirilmiş cihazlara güç sağladığından yuva durumu genellikle şarj durumuyla yakından ilişkilidir.
Uygulamanız, telefonun yuva durumundaki güncelleme hızını etkiler. Spor haberleri uygulaması masaüstü yuvadayken güncelleme sıklığını artırabilir veya cihaz araç yuvasındaysa güncellemelerinizi tamamen devre dışı bırakabilirsiniz. Buna karşılık, arka plan hizmetiniz trafik koşullarını güncelliyorsa araç yuvasındayken güncellemelerinizi en üst düzeye çıkarabilirsiniz.
Yuva durumu, sabit Intent
olarak da yayınlanır. Böylece, cihazın yuvaya yerleştirilip yerleştirilmediği ve yuvaya yerleştirilmişse hangi tür yuvada olduğu sorgulanır.
Mevcut yerleştirme durumunu belirleme
Yuva durumu ayrıntıları, ACTION_DOCK_EVENT
işleminin sabit bir yayınına ilave olarak eklenir. Yapışkan olduğundan yayın alıcısı olarak null
üzerinden registerReceiver()
numaralı telefonu arayabilirsiniz. Aşağıdaki snippet'te bu işlemin nasıl yapılacağı 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 yerleştirme durumunu EXTRA_DOCK_STATE
ekstra dosyasından çıkarabilirsiniz:
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 yuva türünü belirleme
Yuvaya yerleştirilen aşağıdaki dört farklı yuva türünden herhangi birine yerleştirilebilir:
- Araba
- Masa
- Düşük Seviyede (Analog) masa
- İleri teknoloji (Dijital) çalışma masası
Son iki seçenek yalnızca Android API düzeyi 11'de kullanıma sunulmuştur. Bu nedenle, özellikle dijital veya analog yerine yalnızca yuva türüyle ilgileniyorsanız üç masa türünü de kontrol etmek iyi bir uygulamadır:
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;