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

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;