توقف و از سرگیری پخش رسانه با صفحه کلید خارجی Spacebar

هر زمان که برنامه شما یک فایل رسانه‌ای را پخش می‌کند، کاربران باید بتوانند با فشار دادن کلید فاصله (Spacebar) روی صفحه کلید فیزیکی، پخش را متوقف کرده و از سر بگیرند.

پاسخ به رویدادهای فشردن کلید

برنامه‌های مبتنی بر Jetpack Compose یا Views به فشردن کلیدهای صفحه‌کلید به روش‌های مشابهی پاسخ می‌دهند: برنامه به رویدادهای فشردن کلید گوش می‌دهد، رویدادها را فیلتر می‌کند و به فشردن کلیدهایی مانند فشردن کلید Spacebar پاسخ می‌دهد.

۱. به رویدادهای صفحه کلید گوش دهید

نوشتن

با استفاده از Jetpack Compose، از onPreviewKeyEvent یا اصلاح‌کننده onKeyEvent در طرح‌بندی که ضربه کلید را مدیریت می‌کند، استفاده کنید:

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

یا

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

بازدیدها

در یک activity در برنامه خود، متد onKeyUp() را override کنید:

کاتلین

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    ...
}

جاوا

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    ...
}

این متد هر بار که کلیدی فشرده شود، فراخوانی می‌شود، بنابراین دقیقاً یک بار برای هر ضربه کلید اجرا می‌شود.

۲. فشردن کلید فاصله (Spacebar) برای فیلتر

درون متدهای اصلاح‌کننده‌ی Compose onPreviewKeyEvent و onKeyEvent یا متد viewهای onKeyUp() ، عبارت KeyEvent.KEYCODE_SPACE را فیلتر کنید تا رویداد صحیح به کامپوننت رسانه‌ای شما ارسال شود:

نوشتن

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

یا

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

بازدیدها

کاتلین

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback()
    return true
}
return false

جاوا

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback();
    return true;
}
return false;

نکات کلیدی

  • KEYCODE_SPACE : ثابت کد کلید برای کلید فاصله (Spacebar) .

نوشتن

  • onPreviewKeyEvent : اصلاح‌کننده‌ای که به یک کامپوننت امکان می‌دهد رویدادهای کلید سخت‌افزاری را هنگامی که خودش (یا یکی از فرزندانش) در حالت فوکوس قرار دارد، رهگیری کند.
  • onKeyEvent : مشابه onPreviewKeyEvent ، اصلاح‌کننده‌ای که به یک کامپوننت امکان می‌دهد رویدادهای کلید سخت‌افزاری را هنگامی که کامپوننت (یا یکی از فرزندان آن) در حالت فوکوس قرار دارد، رهگیری کند.

بازدیدها

  • onKeyUp() : رویدادی که زمانی فراخوانی می‌شود که یک کلید رها شده و توسط یک view (مانند TextView ) در یک activity مدیریت نمی‌شود.

نتایج

اکنون برنامه شما می‌تواند به فشردن کلید فاصله (Spacebar) برای مکث و از سرگیری پخش ویدیو یا سایر رسانه‌ها پاسخ دهد.