java - 一次只播放一个音频文件?

标签 java android loops audio

如何使其仅播放我选择的声音,直到我按下另一个 ImageButton,这样它们的声音就不会相互重叠。

public class MainActivity extends AppCompatActivity {
    MediaPlayer leaf,water,fire,wind;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        leaf=MediaPlayer.create(MainActivity.this,R.raw.forest);
        water=MediaPlayer.create(MainActivity.this,R.raw.sea);
        fire=MediaPlayer.create(MainActivity.this,R.raw.fire);
        wind=MediaPlayer.create(MainActivity.this,R.raw.wind);
    }
    public void playleaf(View view ) {
        leaf.setLooping(true);
        leaf.start();
    }
    public void playwater(View view ) {
        water.setLooping(true);
        water.start();
        water.start();
    }
    public void playfire(View view ) {
        fire.setLooping(true);
        fire.start();
    }
    public void playwind(View view ) {
        wind.setLooping(true);
        wind.start();
    }
}

最佳答案

做这样的事情。

MediaPlayer player;

public void playleaf(View view) {

    stopMedia();
player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

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

public void playwater(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

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

private void stopMedia() {
    if (player != null) {
        player.release();
        player = null;
    }
}

public void playfire(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

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

public void playwind(View view) {
    stopMedia();

player = new MediaPlayer();

    player.setDataSource(R.raw.leaf);

    player.prepareAsync();

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

关于java - 一次只播放一个音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59414102/

相关文章:

android - 在 com.android.build.gradle.LibraryExtension 类型的对象上找不到参数 [] 的方法 buildFeatures()

android - 已建立的连接被主机中的软件中止

javascript - 如何循环遍历 li 的 url 读取部分,然后使用 Jquery 将其作为类添加到 li

java - 我有一个 Selenium 脚本和 GUI。如果我的团队尚未下载 Selenium,我如何与他们分享

java - 泛型 - 向泛型类提供具体类型时类型不匹配

android - 为什么我的 NavigationView 顶部有一个灰色区域

asp.net - VB.net 1.1 - 有 Continue For 吗?

java - Web 应用程序的浏览器问题

java - 将本地 JAR 依赖项捆绑到目标 JAR 中

javascript - 使用循环在 JavaScript 中构建多维对象