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

نماد امتیاز چهار ستاره

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

وقتی رسانه تنها عنصر پنجره است (مانند پخش ویدیوی تمام صفحه)، به رویدادهای فشردن کلید در سطح صفحه در Jetpack Compose پاسخ دهید.

بهترین شیوه‌ها

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

مواد لازم

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

مراحل

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

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

با Jetpack Compose، می‌توانید از onPreviewKeyEvent یا اصلاح‌کننده onKeyEvent در کامپوننتی که ضربه کلید را مدیریت می‌کند، بهره ببرید.

تفاوت اصلی بین این دو اصلاح‌کننده در جایی است که رویداد در صورت عدم مصرف آن توسط اصلاح‌کننده، ارسال می‌شود:

  • onPreviewKeyEvent - رویداد را به اولین فرزند آن ارسال می‌کند.
  • onKeyEvent - رویداد را به والد composable ارسال می‌کند.

۲. فیلتر کردن و مدیریت کلیدهای فاصله

درون onPreviewKeyEvent یا onKeyEvent modifier lambda، رویدادهای کلیدی که در آن‌ها آزادسازی کلید ( KeyEventType.KeyUp ) با فاصله ( Key.Spacebar ) مطابقت دارد را فیلتر کنید.

اگر کد شما رویداد را مدیریت می‌کند و نمی‌خواهید رویداد بیشتر پخش شود، true را برمی‌گرداند. اگر به کامپوننت‌های دیگر اجازه دهید رویداد را مدیریت کنند، false را برمی‌گرداند.

  • گزینه الف: استفاده از onPreviewKeyEvent

    Column(
        modifier = Modifier.onPreviewKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

  • گزینه ب: استفاده از onKeyEvent

    Column(
        modifier = Modifier.onKeyEvent { event ->
            if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
                // Handle spacebar keypress to pause/resume playback.
                true
            } else {
                false
            }
        }
    ) {
        // Content
    }

نتایج

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

منابع اضافی

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