
- خانه
- تالار گفتگو
- برنامهنویسی اندروید
- اجرای پشت سر هم یه فایل صوتی در یه اکتیویتی

پاسخها به این تاپیک

ghasem
۱۳۹۶/۰۹/۲۲
خیلی ممنون از راهنماییتون
اما این قسمت کد
while (mp.isPlaying()) {
// do nothing
}
mp.release();
باعث میشه که وقتی روی دکمه پلی کلیک کنم،برنامم کرش کنه و متوقف بشه.اگر هم کد رو پاک کنم،برنامه اجرا میشه ولی باز هم اهنگ ها پشت سر هم پخش میشن

stack programer
۱۳۹۶/۰۹/۲۲
سلام داخل همان لینک گفته یک روش بهتر باید براش پیدا کنی
Um, the while(mp.isPlaying()) loop is not a good idea and will most likely cause your app to stop responding
این تکه از کد را می توانید به صورت زیر تغییر دهید.
final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.one);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);
Button btn = (Button)this.findViewById (R.id.button1);
btn.setOnClickListener(new OnClickListener(){
@override
public void onClick(View v) {
mp1.start();
mp2.pause();
mp2.seekTo(0);
}
});
Button btn1 = (Button)this.findViewById (R.id.button2);
btn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
mp1.pause();
mp1.seekTo(0);
mp2.start();
}
https://stackoverflow.com/questions/22092016/how-to-play-two-different-sound-on-two-different-buttons
ghasem
۱۳۹۶/۰۹/۲۲
این کد کار نمیکنه. البته من 6 تا مدیاپلیر مختلف دارم.شاید به خاطر اون باشه.از if و else استفاده میکنم بهتره.خیلی خیلی ممنونم از راهنماییتون

stack programer
۱۳۹۶/۰۹/۲۲
خواهش می کنم، شما دوتا باتن دارید، دوتا متد setOnClickListener کیککردن تعریف شده وقتی که باتن اول کلیک می شه مدیا پلیر اول را پلی می کنه، دومی را متوقف و برای رویداد setOnClickListenerکلیک کردن باتن دوم برعکس این یکی.
if else داخل این ساختار نیازی نیست، کلاسهای مدیا پلیر در بالا تعریف شده ...در کل راه حل همینه
final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.one);
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.two);

ghasem
۱۳۹۶/۰۹/۲۲
برای من این روش کار نمیکنه.من 6 تا دکمه دارم و هر کدوم اهنگ خاصی رو پخش میکنن و این روش برام کار نمیکنه

stack programer
۱۳۹۶/۰۹/۲۱
سلام، برای عدم اجرای هم زمان موسیقی باید از یک ساختار سوییچ کیس برای تعریف شی مدیاپلیر استفاده کنی...
https://stackoverflow.com/questions/11507062/play-two-different-sound-files-from-two-different-buttons
public void onClick(View v)
{
switch(v.getId())
{
case R.id.imageButton1:
mp = MediaPlayer.create(this, R.raw.lettera);
break;
case R.id.imageButton2:
mp = MediaPlayer.create(this, R.raw.letterb);
break;
default:
return;
}
mp.start();
while (mp.isPlaying()) {
// do nothing
}
mp.release();
}

ghasem
۱۳۹۶/۰۹/۲۲
من یه راهی پیدا کردم. با استفاده از دسترات if و else
ولی دو تا مشکل داره
اولیش اینکه حتما باید مدیا پلیر از قبل اجرا شده باشه وگرنه برنامه کرش میکنه.راه حلش اینه که در متد onCreate یک بار مدیا پلیر اجرا بشه و میتونیم یکی از اهنگ ها رو پلی کنیم ولی به جای اینکه از Start استفاده کنیم، از Stop استفاده میکنیم تا اهنگ به محض ورود پخش نشه و کد if و else هم به صورت زیر باشه
if (mp.isPlaying()) {
mp.stop();
return;
} else {
mp = MediaPlayer.create(context, R.raw.music);
mp.start();
مشکل دوم هم اینکه اگه یک بار روی دکمه پخش کلیک کنیم، اهنگ ابتدا متوقف میشه و پخش نمیشه و برای پخشش حتما باید یه بار دیگه دکمه رو بزنیم. و خب راه حلش رو هنوز پیدا نکردم