barshahi

پخش صدا

8 ارسال در این موضوع قرار دارد

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

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

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

مثلا 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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری