android - 调用释放并播放多种声音

标签 android audio mp3 release

使用此代码,我想停止所有正在执行的声音,只播放单击的按钮,但调用释放,声音变为空,您无法再次运行声音。但如果你不调用释放,无论如何都会给我问题。我怎样才能找到解决这个难题的方法?

代码:

public MediaPlayer mediaPlayer = null;
    public Boolean playing = false;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

Button b1 = (Button)findViewById(R.id.b1);
b1.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){



                   if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();









                   mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
                   mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            // TODO Auto-generated method stub

                            mediaPlayer.start();

                            mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                public void onCompletion(MediaPlayer mediaPlayer) {
                                    mediaPlayer.release();
                                    playing=true;
                                };
                            });

                                }
                            });


Button b2 = (Button)findViewById(R.id.b2);
    b2.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){


                   if(mediaPlayer != null && mediaPlayer.isPlaying()) mediaPlayer.stop();

                   mediaPlayer = MediaPlayer.create(getBaseContext(),R.raw.b2);
                   mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                        @Override
                        public void onPrepared(MediaPlayer mediaPlayer) {
                            // TODO Auto-generated method stub

                            mediaPlayer.start();

                            mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                                public void onCompletion(MediaPlayer mediaPlayer) {
                                    mediaPlayer.release();

                                };
                            });
                                }
                            });

               }});

最佳答案

我解决了这个问题:

b1.setOnClickListener(new Button.OnClickListener() { 

               public void onClick(View v){



                   if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
                       mediaPlayer.stop();
                       mediaPlayer.release();
                     }









                   mediaPlayer = MediaPlayer.create(menu.this, R.raw.b1);
                   mediaPlayer.start();

                }});

关于android - 调用释放并播放多种声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441813/

相关文章:

android - 错误 :(254) Attribute "background" already defined with incompatible format

c# - 按住手机上的按钮

android - 从缓冲区播放音频

python - 使用python诱变剂后,未显示元数据

Java:淡出音乐

java - 如何在将整个输入作为字符串的计算器中计算百分比?

android - monodroid 和桌面应用程序的通用库

python - 寻找吉他弦wav文件

javascript - Node.js如何流式传输音频文件

c++ - 如何使用最新版本的 ffmpeg 创建立体声 mp3 文件?