在Java中的不同时刻播放多种声音

问题描述 投票:1回答:1

所以我一直在尝试从youtube教程中制作Soundbox应用。到目前为止,它可以正常工作,但是我有一些问题,我不知道如何解决。。。我是100%的初学者,我尝试搜索以前的主题,但没有任何效果。因此,当我按下一个按钮时会播放声音,但问题是当我按下另一个按钮时,它会停止播放第一个声音。我想保持第一个声音在播放,而第二个声音在按下按钮时开始播放。可能吗?

Ps:如何也可以通过“停止”按钮停止所有歌曲?

谢谢

这是我的代码:

package com.example.appcamp;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {
private MediaPlayer mPlayer = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button criloin= (Button) findViewById(R.id.criloin1);
    criloin.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            playSound(R.raw.cri);
        }
    });

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

        @Override
        public void onClick(View v){
            playSound(R.raw.cri2);
        }
    });

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

        @Override
        public void onClick(View v){
            playSound(R.raw.cri3);
        }
    });

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

        @Override
        public void onClick(View v){
            playSound(R.raw.cri4);
        }
    });

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

        @Override
        public void onClick(View v){
            playSound(R.raw.marais);
        }
    });

}

@Override
public void onPause(){
    super.onPause();
    if(mPlayer !=null){
        mPlayer.stop();
        mPlayer.release();
    }
}

private void playSound(int resId){
    if(mPlayer != null){
        mPlayer.stop();
        mPlayer.release();
    }
    mPlayer = MediaPlayer.create(this, resId);
    mPlayer.start();

   }
}
java android button audio
1个回答
0
投票
尝试删除

if(mPlayer != null){ mPlayer.stop(); mPlayer.release(); }

来自playSound()函数。

它应该看起来像这样:

private void playSound(int resId){ mPlayer = MediaPlayer.create(this, resId); mPlayer.start(); } }

并且要停止所有音乐,您应该对每种音乐使用单独的mediaPlayer对象,以停止和隐式停止所有功能,例如mp1.stop(); mp2.stop();。等等。

希望对您有用。

© www.soinside.com 2019 - 2024. All rights reserved.