ورود

View Full Version : مشکل در مدیریت پخش آهنگ در اکلیپس اندروید



jalal123
یک شنبه 31 فروردین 1393, 01:16 صبح
با سلام.پروژه من شامل 5 دکمه است که با کلیک هر کدام باید یک آهنگ پخش شود.اما مشکل من در اینجاست که با کلیک مثلا دکمه 3 آهنگ قبلی پخش شده از دکمه 1 یا هر دکمه دیگر stop نمی شود .بلکه آهنگها روی هم و همزمان اجرا میشوند .ممنمون میشم اگه کسی کمک کنه.این هم کد:

package com.example.jalalbist;






import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;

import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import android.media.AudioManager;
import android.media.MediaPlayer;

public class MainActivity extends Activity {
MediaPlayer mp ;
@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final View Button1=findViewById(R.id.button1);
final View Button2=findViewById(R.id.button2);
final View Button3=findViewById(R.id.button3);


Button1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

// TODO Auto-generated method stub

final MediaPlayer mp = MediaPlayer.create(MainActivity.this,R.raw.aa_1);


if(mp.isPlaying())
{
mp.stop();

}
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();

};
});

};
});

;
//------------------------------------------------------------------------

Button2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

// TODO Auto-generated method stub

final MediaPlayer mp = MediaPlayer.create(MainActivity.this,R.raw.aa_3);

if(mp.isPlaying())
{
mp.stop();

}
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();

};
});

};
});


;
//------------------------------------------------------------------------

esmaeilbf
یک شنبه 31 فروردین 1393, 08:14 صبح
باید مدیا پلیر رو release() کنید قبل از پلی یک اهنگ دیگه

jalal123
یک شنبه 31 فروردین 1393, 22:11 عصر
آقا اسماعیل من مدیاپلیر رو release() کردم اما error داد.لطف می کند نمونه کد رو بنویسین؟واقعا ممنون می شم.

esmaeilbf
یک شنبه 31 فروردین 1393, 22:43 عصر
برای یکی از پروژه ها همین کار رو کردم چندتا دکمه play برای آهنگ های مختلف گذاشتم و با یک شرط switch آهنگها پخش کردم


public void listenerPlays(View view) {
switch (view.getId()) {
case R.id.btnAlPlayS1:
seriesFile = 1;
if (G.isPlayedFirstTime)
G.player.release();
break;
case R.id.btnAlPlayS2:
seriesFile = 2;
if (G.isPlayedFirstTime)
G.player.release();
break;
case R.id.btnAlPlayS3:
seriesFile = 3;
if (G.isPlayedFirstTime)
G.player.release();
break;


default:
return;
}


playSound(seriesFile);


}


توضیحات:
برای سه تا button متد onClick رو تعریف کردم و با دستور Swicth بر اساس نو ایدی دکمه رو شناسایی کردم ویک عدد int رو به متد پخش آهنگ فرستادم که اونجا هم با بررسی شماره عدد آهنگ مورد نظر رو پخش کردم امااون دستور if یک فیلد boolean رو چک میکنه و تا برای بار اول مانع release شدن بشه اگر اینکار رو نکنیم برنامه کرش میکنه
حالا برای اینکه بهتر بتونم کمک کنم خطایی رو که logcat میده بنویس

در ضمن سورس کدتون رو هم در تگ java بزارید تا بشه خوندش

moralschool
یک شنبه 31 فروردین 1393, 23:28 عصر
برای دکمه های دیگه اول موزیک رو قطع کن یعنی بنویس :


mp.stop();

بعدشم کد پخش موزیک جدید رو قرار بده

jalal123
چهارشنبه 03 اردیبهشت 1393, 18:47 عصر
ممنون از لطف شما.مشکل حل شد.

leadstar71
جمعه 05 اردیبهشت 1393, 23:54 عصر
دوست عزیز میتونین در این زمینه به من کمک کنید؟