شاید در نگاه اول نوشتن یک موزیکپلیر در سال ۲۰۲۶ کار تکراری به نظر برسد؛ با وجود انبوهی از اپلیکیشنهای استریم مثل اسپاتیفای و پلیرهای مختلف در گوگل پلی، چرا یک توسعهدهنده باید وقتش را صرف بازنویسی چرخ کند؟
واقعیت این است که انگیزه اصلی من از ساخت Sepotify از یک نارضایتی روزمره شروع شد: سنگینی بیش از حد اپلیکیشنهای امروزی، مصرف بیهوده باتری و وابستگی عمیق به اینترنت و سرویسهای واسط.
خیلی وقتها فقط میخواستم یک فایل صوتی با کیفیت بالا (Lossless FLAC) را بدون لگ، بدون لودینگهای اضافه، و با کمترین مصرف حافظه رم در پسزمینه پخش کنم. بیشتر پلیرهای موجود پر از انیمیشنهای سنگین، تبلیغات یا کدهای کرشریپورتری بودند که به شکل محسوسی پردازنده را درگیر میکردند. همین موضوع باعث شد تصمیم بگیرم با کاتلین (Kotlin) و معماری استاندارد اندروید، یک پلیر سبک، مستقل و متمرکز بر سرعت توسعه دهم.
چالشهای فنی که در مسیر حل کردم
۱. مدیریت بهینه حافظه در پردازش فرمتهای با نرخ بیت بالا (Hi-Res)
دیکود کردن فایلهای صوتی سنگین مثل FLAC و WAV در پسزمینه اندروید چالش مدیریت Garbage Collector و مصرف باتری دارد. برای حل این مشکل، پایپلاین صوتی را تا جای ممکن بهینهسازی کردم تا از allocations بیهوده در حافظه در طول استریم صدا جلوگیری شود.
۲. سرویس پسزمینه و عدم بسته شدن توسط سیستمعامل
سیستمعامل اندروید در نسخههای جدید مدیریت بسیار سختگیرانهای روی Background Services دارد. پیادهسازی اصولی یک Media Session پایدار که هماهنگ با اعلانهای سیستم و کنترلهای سختافزاری هندزفری کار کند، نیازمند رعایت دقیق چرخه حیات (Lifecycle) در معماری مدرن بود.
۳. تمرکز بر سادگی و کارایی رابط کاربری
به جای رابطهای شلوغ، اولویت را روی پاسخدهی سریع (Zero-delay) و دسترسی آسان به آرشیو آفلاین آهنگها گذاشتم؛ بدون هیچ درخواست اینترنتی پنهان یا لاگهای غیرضروری.
علاقه اصلی من پیوند میان معماریهای سطح پایین سختافزاری و نرمافزارهای کاربردی است؛ از کدنویسی C/++C روی میکروکنترلرهای تعبیهشده مثل ESP32 گرفته تا پردازش سیگنالهای بیسیم و توسعه نیتیو اندروید. پروژه Sepotify تجربه بسیار خوبی بود تا ثابت کنم نرمافزارهای مدرن همچنان میتوانند سبک، سریع و وفادار به منابع سختافزاری باقی بمانند.
پروژه Sepotify به صورت کاملاً متنباز (Open Source) در گیتهاب در دسترس است و خوشحال میشوم اگر اهل اندروید یا موسیقی باکیفیت هستید، نگاهی به کدها بیندازید و نظرتان را بگویید:
🔗 مخزن پروژه در گیتهاب: github.com/RMNO21/Sepotify
🌐 وبسایت و پورتفولیوی رسمی من: rmno21.github.io
💻 سایر پروژهها و سیستمهای من در گیتهاب: github.com/RMNO21
اگر شما هم تجربه بهینهسازی صدا در اندروید یا پروژههای مشابهی داشتید، خوشحال میشوم در بخش نظرات در موردش گپ بزنیم.