我遇到了使用多个mediaplayes的问题

时间:2016-05-30 21:37:08

标签: android

我正在制作一个音板,我有大约12个媒体播放器,当我在我的模拟器中启动应用程序时,我开始点击一些按钮,其他没有点击的按钮停止产生他们准备制作的声音。

  package com.example.husse.randomsounds;
  import android.graphics.Typeface;
  import android.media.Image;
  import android.media.MediaPlayer;
  import android.os.Bundle;
  import android.support.design.widget.FloatingActionButton;
  import android.support.design.widget.Snackbar;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.Toolbar;
  import android.view.View;
  import android.view.animation.AlphaAnimation;
  import android.view.animation.Animation;
  import android.widget.TextView;
  import android.widget.ImageButton;
  import android.content.Intent;


 public class Board_one extends AppCompatActivity {
private TextView title1;
private ImageButton cat;
private ImageButton scream;
private ImageButton next;
private ImageButton time;
private ImageButton dogg;
private ImageButton crowd;
private ImageButton gun;
private ImageButton thunder;
private ImageButton forest;
private ImageButton faucet;
private ImageButton alarm;
private ImageButton lazer;
private ImageButton shatter;
public MediaPlayer mplayer;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_board_one);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    //Finding Buttons
    title1 = (TextView) findViewById(R.id.textView2);
    lazer = (ImageButton)findViewById(R.id.imageButton1234);
    shatter = (ImageButton) findViewById(R.id.imageButton8);
    alarm = (ImageButton) findViewById(R.id.imageButton91);
    scream = (ImageButton) findViewById(R.id.imageButton2);
    faucet = (ImageButton) findViewById(R.id.imageButton94);
    cat = (ImageButton) findViewById(R.id.imageButton);
    next = (ImageButton) findViewById(R.id.imageButton3);
    time = (ImageButton) findViewById(R.id.imageButton4);
    dogg = (ImageButton) findViewById(R.id.imageButton5);
    crowd = (ImageButton) findViewById(R.id.imageButton6);
    gun = (ImageButton) findViewById(R.id.imageButton78);
    thunder = (ImageButton) findViewById(R.id.imageButton80);
    forest = (ImageButton) findViewById(R.id.imageButton90);

    //Finding buttons
    Typeface mytypeface = Typeface.createFromAsset(getAssets(), "AirstreamNF.otf");
    title1.setTypeface(mytypeface);
    //Media Players ------------------------------------------------------------------------------------
    final MediaPlayer dog = MediaPlayer.create(this, R.raw.meow);

    final MediaPlayer faucetsound = MediaPlayer.create(this, R.raw.waterfall);
    final MediaPlayer thundersound = MediaPlayer.create(this, R.raw.thundersound);
    final MediaPlayer gunshot = MediaPlayer.create(this, R.raw.gunshot);
    final MediaPlayer scare = MediaPlayer.create(this, R.raw.screaming);
    final MediaPlayer baby = MediaPlayer.create(this, R.raw.timesup);
    final MediaPlayer bark = MediaPlayer.create(this, R.raw.dogbarking);
    final MediaPlayer boo = MediaPlayer.create(this, R.raw.wow);
    final MediaPlayer forestsounds = MediaPlayer.create(this, R.raw.rainforestsound);
    final MediaPlayer alaramsound = MediaPlayer.create(this, R.raw.alarm);
    final MediaPlayer Lazerso = MediaPlayer.create(this, R.raw.laserbeam);
    final MediaPlayer shattersound = MediaPlayer.create(this, R.raw.shattering);

    // Animations ---------------------------------------------------------------------
    final Animation animation = new AlphaAnimation(1.0f, 0.0f);
    animation.setDuration(100);
    //---------------------------------------------------------------------------
    cat.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    cat.startAnimation(animation);
                    dog.start();
                }
            }
    );
    scream.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    scream.startAnimation(animation);
                    scare.start();

                }
            }
    );
    next.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent dab = new Intent("com.example.husse.randomsounds.Board_two");
                    startActivity(dab);

                }
            }
    );
    time.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    time.startAnimation(animation);
                    baby.start();
                }
            }
    );

    dogg.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dogg.startAnimation(animation);
                    bark.start();
                }
            }
    );
    crowd.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    crowd.startAnimation(animation);
                    boo.start();
                }
            }
    );
    gun.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    gun.startAnimation(animation);
                    gunshot.start();
                }
            });

    thunder.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    thunder.startAnimation(animation);
                    thundersound.start();
                }
            }
    );
    forest.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    forest.startAnimation(animation);
                    forestsounds.start();
                }
            }
    );
    faucet.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    faucet.startAnimation(animation);
                    faucetsound.start();
                }
            }
    );
    alarm.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    alarm.startAnimation(animation);
                    alaramsound.start();
                }
            }
    );


    shatter.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    shatter.startAnimation(animation);
                    shattersound.start();

                }
            }
    );
    lazer.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    lazer.startAnimation(animation);
                    Lazerso.start();
                }
            }
    );


    }
}

1 个答案:

答案 0 :(得分:0)

我建议你只使用一个媒体播放器:

MediaPlayer mp;

然后,在onCreate方法中:

mp.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});

在你的onClick听众身上:

mp.setDataSource(this,R.raw.gunshot);
mp.prepareAsync();