تبلیغات

آموزش ساخت Broadcast Receiver برای دکمه های Volume در اندروید

Broadcast Receiver

برای مدیریت کلیدهای Volume (دکمه‌های کم و زیاد کردن صدا)، بایستی از Broadcat Receiver استفاده کرد. البته می‌توان با Ovvirde کردن متدهای خاصی در داخل اکتیوتی نیز این کار را انجام داد؛ ولی هدف این است که در خارج از اکتیویتی و در بک‌گراند نیز بتوانیم فشرده شدن این کلیدها را تشخیص دهیم. که بدین منظور، از Boardcast استفاده می‌شود.

مراحل انجام کار

1- به Android Manifest رفته و کد زیر را بین تگ Application قرار دهید:

همانطور که می‌بینید، برای این کار از اکشن android.media.VOLUME_CHANGED_ACTION استفاده شده است.

2- در داخل پکیج اصلی، یک کلاس به نام MyBroadcastReceiver (نامی که در منیفت مشخص کردیم) ایجاد کرده و آن را به صورت زیر پیاده کنید:

همانطور که می‌بینید، در داخل متد onReceive، مقدار صدا را به داخل متغیر volume ریخته و سپس به صورت لاگ چاپ کرده‌ایم.

تشخیص دکمه بالا و پایین

به خاطر نبودن EXTRA_KEY_EVENT ، روشی که برای تشخیص دکمه استفاده می‌شود به این صورت است:

  • آخرین مقدار volume را در جایی نگهداری می‌کنیم؛ مثلا از Preferences ها می‌توان استفاده کرد.
  • در داخل Broadcast ، هربار که onReceive اجرا می‌شود مقدار volume گرفته شده را با مقدار قدیمی بررسی می‌کنیم.
    اگر زیاد باشد، یعنی دکمه‌ی زیاد کردن فشرده شده است و بالعکس.
    اگر با مقدار قدیمی برابر باشد چه باید کرد؟! (جوابش ساده است، فکر کنید)
  • در نهایت، مقدار جدید صدا را ذخیره می‌کنیم تا دفعه‌ی بعد بررسی کنیم.

اجرا نشدن این کد در زمان قفل بودن گوشی

احتمالا اندروید به دلیل مسائل امنیتی، اجازه کار کردن Broadcast Receiver را در زمان قفل بودن به گوشی نمی‌دهد!! اگر دوستان روشی بلد هستند یا پیدا کردند، در نظرات مطرح کنند تا بقیه هم بدانند.

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

تبلیغات
2 نظر
کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده 2 دیدگاه

    1. مهدی گفت:

      با سلام و خسته نباشید
      من میخوام با فشار دادن دکمه های ولوم در داخل برنامه یکسری کد که من میخوام اجرا بشه می لطفا اگه میتونید کمک کنید با تشکر

      1. هادی اکبرزاده گفت:

        سلام. خب تو این آموزش هم همینو توضیح دادیم که! 😀