وضعیت و نوع اتصال را تعیین و نظارت کنید

دستگاه های مجهز به اندروید را می توان به انواع مختلف داک متصل کرد. اینها شامل اسکله ماشین، اسکله خانگی و اسکله دیجیتال یا آنالوگ است. حالت داک معمولاً به حالت شارژ ارتباط نزدیکی دارد، زیرا بسیاری از داک‌ها برق دستگاه‌های متصل را تامین می‌کنند.

برنامه شما روی نرخ به‌روزرسانی تلفن در حالت داک تأثیر می‌گذارد. می‌توانید فرکانس به‌روزرسانی یک برنامه اخبار ورزشی را هنگامی که در پایه دسک‌تاپ قرار دارد افزایش دهید، یا اگر دستگاه در اتومبیل متصل است، به‌روزرسانی‌های خود را کاملاً غیرفعال کنید. برعکس، اگر سرویس پس‌زمینه شما شرایط ترافیکی را به‌روزرسانی می‌کند، می‌توانید به‌روزرسانی‌های خود را در زمانی که خودرو در اسکله است، به حداکثر برسانید.

حالت داک نیز به‌عنوان یک Intent چسبنده پخش می‌شود، که به شما امکان می‌دهد پرس و جو کنید که آیا دستگاه متصل است یا خیر و اگر چنین است، در کدام نوع داک است.

وضعیت اتصال فعلی را تعیین کنید

جزئیات وضعیت حوض به عنوان یک قسمت اضافی در پخش چسبناک اقدام ACTION_DOCK_EVENT گنجانده شده است. از آنجایی که چسبنده است، می توانید registerReceiver() را فراخوانی کنید و به عنوان گیرنده پخش، null را ارسال کنید. قطعه زیر نحوه تکمیل این فرآیند را نشان می دهد:

کاتلین

val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
    context.registerReceiver(null, ifilter)
}

جاوا

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

می توانید وضعیت اتصال فعلی را از EXTRA_DOCK_STATE اضافی استخراج کنید:

کاتلین

val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED

جاوا

int dockState -1;
if (dockStatus != null) {
  dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

نوع داک فعلی را تعیین کنید

اگر دستگاهی متصل باشد، می‌توان آن را در هر یک از چهار نوع مختلف داک زیر متصل کرد:

  • ماشین
  • میز
  • میز پایین رده (آنالوگ).
  • میز رده بالا (دیجیتال).

دو گزینه اخیر فقط در Android API سطح 11 معرفی شده اند، بنابراین تمرین خوبی است که هر سه نوع میز را زمانی که به جای دیجیتال یا آنالوگ بودن آن فقط به نوع داک علاقه دارید، بررسی کنید:

کاتلین

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

جاوا

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;