رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

درود بر همه ی اساتید عزیز

من ی برنامه نوشتم که با کلیک بر صفحه یک صدا کوتاه به مدت دو ثانیه پخش میشه!

حال مشکل اینجاس که وقتی تعداد کلیک های سریع پشت سر هم زیاد میشه دیگه صدا پخش نمیشه!

مثلا 20 بار سریع کلیک میکنم 20بار صدا پخش میشه ولی بعدش تا چند ثانیه دیکه صدا پخش نمیشه

ممنون میشم اگه راهنمایی کنید!

اینم کدهامه :

[shcode=java]

public void showBubble(int areaId) {

        mBubbleMap.clear();

        MediaPlayer mp = new MediaPlayer();

        Area a = mIdToArea.get(areaId);

        Log.d("showBubble", "area is" + a.getName());

        //mp = MediaPlayer.create(getContext(), R.raw.chord);

        try {

            mp.prepare();

            mp.prepareAsync();

            mp.release();

            mp.reset();

        } catch (IllegalStateException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        if (a.getName().equals("وسط")) {

            mp = MediaPlayer.create(getContext(), R.raw.chord);

            mp.start();

            // Toast.makeText(getContext(), "وسط", 0).show();

        } else if (a.getName().equals("کنار")) {

            mp = MediaPlayer.create(getContext(), R.raw.kenar);

            // Toast.makeText(getContext(), "کنار", 0).show();

            mp.start();

        } else {

            mp = MediaPlayer.create(getContext(), R.raw.miyane);

            // Toast.makeText(getContext(), "میانه", 0).show();

            mp.start();

        }

        if (a != null) {

            addBubble(a.getName(), areaId);

        }

        invalidate();

    }

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

توی هر if ای که قراره یه فایل رو پخش کنی ابتدا قبل از پخش اینها رو قرار بده:

mp.release();
mp.stop();
mp.perepare();

بعد پلی کن.

انشاالله جواب بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

ممنون از راهنماییتون ولی نمیخوام صدای قبلی stop بشه

حالا اینا رو توی if میزارم ببینم درست میشه یا نه!

سپاسگذارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بنظرم شما یک متغیر دیگه ای ایجاد کنید چون نمیخواید صدای قبلی استاپ بشه و متغیر mpات مشغوله پس یه متغیر دیگه ای برای هر صدا ایجاد کن که مشکلی ایجاد نشه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سپاسگذارم از راهنماییتون

مشکل حل شد!!

حالا مشکلی که دارم اینه که میخوا یک صدای چند ثانیه ای رو به صورت loop پخش کنم که یک ریتم تکرار میشه و کاربر با پخش ریتم فک کنه که یک فایل پیوسته رو گوش میکنه

اما متاسفانه یک وقفه بین loop  هست که این ریتمو بهم میریزه!!

نمیدونم باید چطوری اینو بنویسم که مشکل برطرف بشه!!:huh:

اینم کدهامه:

[shcode=java]

private void playRitm(int i) {

        MediaPlayer mp_ritm = new MediaPlayer();

        mp_ritm = MediaPlayer.create(this, R.raw.yek);

        if (i == 0) {

            mp_ritm.stop();

            mp_ritm.release();

           

            try {

                mp_ritm.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            mp_ritm = MediaPlayer.create(this, R.raw.yek);

            mp_ritm.setLooping(true);

            mp_ritm.start();

        } else if (i == 1) {

            mp_ritm.stop();

            mp_ritm.reset();mp_ritm.release();

            //mp_ritm.stop();

            try {

                mp_ritm.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            mp_ritm = MediaPlayer.create(this, R.raw.dw);

            mp_ritm.setLooping(true);

            mp_ritm.start();

        } else if (i == 2) {

            mp_ritm.stop();

            mp_ritm.reset();mp_ritm.release();

            try {

                mp_ritm.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            mp_ritm = MediaPlayer.create(this, R.raw.se);

            mp_ritm.setLooping(true);

            mp_ritm.start();

        } else if (i == 3) {

            mp_ritm.stop();

            mp_ritm.reset();mp_ritm.release();

            try {

                mp_ritm.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            mp_ritm = MediaPlayer.create(this, R.raw.chahar);

            mp_ritm.setLooping(true);

            mp_ritm.start();

        } else if (i == 4) {

            mp_ritm.stop();

            mp_ritm.reset();

            mp_ritm.release();

            try {

                mp_ritm.prepare();

            } catch (IllegalStateException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

            mp_ritm = MediaPlayer.create(this, R.raw.panj);

            mp_ritm.setLooping(true);

            mp_ritm.start();

        }

    }

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

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

با kmplayer  پخش کنید و ببینید چند ثانیه بدون صوت است . اگه بود قیچی کنید.

موفق

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من تازه فهمیدم علت چیه چون من قبلا تست کرده بودم برا گوشیم مشکلی نداشت !

ولی توی ورژن JellyBean تغییر داده شده شما باید ابتدا چک کنید که گوشی طرف از این نسخه بالاتر هست یا نه و نسبت به ان کد نویسی کنید.

[shcode=java]

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {

         mIntroPlayer.setNextMediaPlayer(mLoopPlayer);

      }

      mIntroPlayer.setOnCompletionListener(this);

[/shcode]

Link

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...