فرهاد
فرهاد
خواندن ۵ دقیقه·۹ ماه پیش

چطوری در حال پخش موزیک ویدئو ضبط کنیم؟

تاحالا پیش اومده که در حال تماشای ی منظره قشنگ باشید و ی موزیک هم پلی کرده باشید و در لذت فراوان باشید و بخواید این لحظات فوقالعاده رو ضبط کنید؟ گوشی رو در میارید، دوربین رو باز می‌کنید و... موزیک قطع میشه. فکر کنید حالا تو جاده هم بوده باشید و دیگه اون منظره تموم شده باشه. 🫠

امروز میخوام بگم چطوری در این لحظات ضد حال نخوریم.

⚠️ این آموزش برای گوشی های اندروید.


برنامه های اندرویدی برای انجام دادن تقریبا هرکاری نیاز دارن که اجازه والد (سیستم عامل) رو داشته باشن، یکی از همین کار ها هم اسمش TAKE_AUDIO_FOCUS هست و برای این استفاده می‌شه که ی برنامه به OS درخواست بده که اگر مدیا ای در حال پخش هست اون رو متوقف کنه تا برنامه حرفی که می‌خواد رو بزنه و بقیه بشنون چی می‌گه.

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

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

برنامه ها به جز اون اجازه ای که از شما می‌گیرن ی سری اجازه دیگه هم دارن که ما مستقیم توی گوشی اون ‌ها رو نمی‌بینیم.

  • مثلا ی اپ می‌تونه اجازه داشته باشه که وضعیت اتصال شما به اینترنت رو بدونه یا نه!
  • ی اپ می‌تونه اجازه داشته باشه بدونه شما در حال شارژ گوشی خودتون هستید یا نه!

فکر کنم لیست این اجازه ها نسبت به هر گوشی تغییر می‌کنه، اما لیست کاملش برای گوشی خودتون رو می‌تونید با دستور زیر نگاه کنید، برای من ۲۵۲۲ هست!

$ adb shell pm list permissions

اما adb چیه؟

ADB (Android Debug Bridge) is a command-line tool that allows communication between your computer and an Android device. It enables you to execute various commands on your Android device from your computer, such as installing and debugging apps, accessing the device's shell, transferring files, and more. You can use ADB to control your phone, provided that you have the necessary permissions and knowledge of the commands.

برای اینکه دسترسی TAKE_AUDIO_FOCUS از دوربین بگیریم هم نیاز به adb داریم، نصبش در همه سیستم ها به ی شکل نیست و لازم که خودتون سرچ کنید و متوجه بشید که چجوری می‌شه نصبش کرد.

اگر Mac دارید و homebrew هم نصب کردید می‌تونید با دستور زیر نصبش کنید.

$ brew install android-platform-tools

بعد از نصب adb نیاز دارید که Developer mode رو روی گوشی خودتون فعال کنید و USB debugging رو هم روشن کنید. برای اینکار اگه گوشی سامسونگ دارید مراحل زیر رو دنبال کنید و اگر این تنظیمات رو توی گوشی خودتون پیدا نکردید معمولا با ی سرچ ساده می‌تونید بهشون برسید.

  • About phone -> Software information -> Build number -> Tap 10-15 times -> Enter password -> Done
  • Developer options -> USB Debugging -> On -> Done

اگر USB Debugging براتون فعال نیست گوشیتون رو به کامپیوتر وصل کنید و دوباره امتحان کنید. در انتها زمانی که کارتون تموم شد هم اگر دوست داشتید می‌تونید این تنظیمات رو خاموش کنید.

توی این مرحله باید adb رو نصب کرده باشید و گوشیتون به کامپیوتر وصل باشه و USB Debugging هم روشن باشه. الان اگر دستور adb devices رو اجرا کنید باید اسم گوشیتون رو ببینید.

حالا نیازه که اسم package برنامه دوربین رو پیدا کنید، برای من com.sec.android.app.camera بود و اینجوری پیداش کردم.

$ adb shell pm list packages | grep camera

این دستور لیست همه برنامه های گوشیتون رو می‌ده و می‌تونید ازش برای پیدا کردن برنامه های دیگه هم استفاده کنید. مثلا،

$ adb shell pm list packages | grep telegram

با دستور زیر می‌تونید لیست اجازه های برنامه دوربین رو نگاه کنید

$ adb shell appops get com.sec.android.app.camera

اگر دقت کنید TAKE_AUDIO_FOCUS هم توش هست و احتمالا جلوش نوشته allow، این یعنی برنامه دوربین اجازه داره مدیا های دیگه رو متوقف کنه.

با دستور زیر می‌تونید به اندروید بگید که به این درخواست از دوربین گوش نده.

$ adb shell appops set com.sec.android.app.camera TAKE_AUDIO_FOCUS ignore

چرا میگم گوش نده و نمیگم اجازه نده؟ چون اگر اجازه نده احتمالا برنامه کرش می‌کنه، فرقشون اینجوری که پایین نوشتم.

Ignore: When the TAKE_AUDIO_FOCUS mode is set to ignore for an app, the system will treat any requests for audio focus made by that app as if they were never made. This means the app can request audio focus, but the system will not grant it any special priority or make any changes based on those requests.

Deny: On the other hand, when the mode is set to deny, the system explicitly denies the app's requests for audio focus. This means that if the app requests audio focus, the system will not grant it, and the app will not be able to take control of the audio focus.

حالا دیگه کار تموم ツ

الان دیگه می‌تونید هر زمانی ویدیو ضبط کنید، بدون اینکه موزیک قطع بشه. این کار رو می‌تونید برای اینستاگرام هم تکرار کنید، اینجوری دیگه اگه استوری یا پست هارو باز کنید موزیک قطع نمیشه.

> کار رو با جستجو و اطمینان خودتون انجام بدید و صرفا هرچی هرجا نوشته رو کپی نکنید روی سیستم خودتون، من انجام دادم و اوکی بود. امیدوارم برای شما هم کار کنه، اما اگر هر اتفاق دیگه ای بیوفته من مسئولیت اون رو به عهده نمی‌گیرم.

andriodhowto
دانشجوی مهندسی نرم‌افزار.
شاید از این پست‌ها خوشتان بیاید