بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مدیاپلیر + سیک بار

مدیریت گفتگو
Hajhosseini 11 سال پیش
آخرین تغییر: 11 سال پیش

مدیاپلیری رو درنظر بگیرید که با استفاده از seekBar میشه مدت زمان صدا رو توش تغییر داد. دکمه pause و stop داره و زمان پخش رو در تکست ویو نمایش میده.
خلاصه: وقتی با سیک بار موزیک رو جلو میبرم و همون موقع استاپ رو میزنم، چند ثانیه طول میکشه تا استاپ یا pause اعمال بشه
توضیحات:
همه قابلیت های بالا درست کار میکنن، ولی زمانی که موزیک play میشه اگر با seekBar موزیک رو جلو ببریم(موزیک به درستی جلو میره) و در همون لحظه دکمه pause یا stop رو بزنیم، چند ثاینه طول میکشه تا موسیقی استاپ بشه. 
جالب اینجاست که توی حالت بالا اگر صدای گوشی رو کم و زیاد کنیم مدیا کم و زیاد نمیشه و فقط ringtone کم و زیاد میشه ولی در حین پخش موسیقی media کم و زیاد میشه.
حتی کد های stop یا pause کردن موسیقی هم اجرا میشن ولی بسته به میزانی که سیک بار رو جلو بردیم دیر عمل میکنن.

راه حل های ممکن:
فورس کردن ترد(اولویت دادن) --- کار نکرد
اجرای دستور روی ترد اصلی --- کار نکرد
استفاده از BackGround ترد --- کار نکرد
هندل کردن دستی pause به صورتی که مقدار رو ذخیره کنم و دوباره یک مدیاپلیر جدید بسازم --- (تست نشده)
استفاده از متغیر های boolean برای فلگ گذاری --- کارنکرد
سبک کردن پروژه --- تمامی کدهای اضافی حذف شد و فقط pause باقی موند ولی کار نکرد

دوستان اگر راه حل دیگه ای به ذهنتون میرسه ممنون میشم بگید...

نظرات

Spirit 11 سال پیش
فقط یبار با MediaPlayer سروکله زدم، از سورس آقای حسین زاده استفاده کردم، کم و زیاد کردن صدا رو نمیدونم ولی مشکل تاخیر در قطع صدا رو نداشت، لینک
Hajhosseini 11 سال پیش
دارم روش کار میکنم، سورس مدیاپلیر به صورت native نوشته شده که احتمالا با c++ هست. پس امکانش هست که فلگ های من دیرتر از متدهایی مانند isPlaying و ... مقداردهی میشن، ولی هنوز نتیجه نگرفتم. سورس مهندس حسین زاده رو حتما چک میکنم، مرسی اسپریت عزیز
Hajhosseini 11 سال پیش
پروژه آقای حسین زاده رو چک کردم، وقتی سیک بار رو به چپ و راست میکشیم هیچ عملی انجام نمیشه و فقط داره کار progressBar رو انجام میده. ولی وقتی سیک بار رو درست کردم درست کار کرد، این در حالی بود که رینگتون رو پخش میکرد و زمانی که یکی از موزیک هارو با موزیکی که 1 ساعت طول داره عوض کردم همون اتفاق افتاد دوباره...

پاسخ‌ها 1

Hajhosseini 11 سال پیش

مشکل به روش بسیار مسخره ای حل شد:
من دقت کردم زمان هایی اتفاق بالا می افته، اگر دوباره play کنیم و بعد pause رو بزنیم (حتی اگر سریع این کار رو بکنیم) موزیک pause میشه. همین رو توی کد نوشتم:

                     mp.pause();
                    mp.start();
                    mp.pause();

درسته روش اصولی نیست، ولی چون مشکل از سمت سیستم عامل اندروید بود تنها راهی که میتونم تایید کنم درست کار میکنه همینه، اگر دوستان راه بهتری سراغ دارن، اطلاع بدن.

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .