gpt4 book ai didi

android - 只播放一个声音安卓

转载 作者:行者123 更新时间:2023-11-30 03:37:42 26 4
gpt4 key购买 nike

我正在开发一个小测验应用程序,我想根据用户是否正确回答问题来播放声音。

我在“assets/”中有很多声音文件。

我想做的是只播放其中一种声音。我已经能够播放声音,但不仅是一个,两个声音(正确的和不正确的)都一个接一个地播放。

我怎么能只玩一个?这是我的来源:

public void audioPlayer(){
//set up MediaPlayer
mp = new MediaPlayer();

try {
String mp3File = "correct.mp3";
AssetManager assetMan = getAssets();
FileInputStream mp3Stream = assetMan.openFd(mp3File).createInputStream();

mp.setDataSource(mp3Stream.getFD());
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
}

最佳答案

将你的声音文件,即 fail 和 applause 放在 raw 文件夹中,并使用以下代码:

private AssetFileDescriptor sPlaySoundDescriptor = null;
private AssetFileDescriptor sFailSoundDescriptor = null;
private MediaPlayer mp = null;
public static final int FAIL_SOUND = 1;
public static final int APPLAUSE_SOUND = 2;

public void audioPlayer(int soundType){
//set up MediaPlayer
mp = new MediaPlayer();
AssetFileDescriptor soundFileDescriptor = null;
try {
if (sFailSoundDescriptor == null) {
sFailSoundDescriptor = context.getResources().
openRawResourceFd(R.raw.fail);
}
if (sApplauseSoundDescriptor == null) {
sApplauseSoundDescriptor = context.getResources().
openRawResourceFd(R.raw.applause);
}
switch (soundType) {
case FAIL_SOUND:
soundFileDescriptor = sFailSoundDescriptor;
break;
case APPLAUSE_SOUND:
soundFileDescriptor = sApplauseSoundDescriptor;
break;
}
mp.reset();
mp.setDataSource(soundFileDescriptor.getFileDescriptor(),
soundFileDescriptor.getStartOffset(),
soundFileDescriptor.getDeclaredLength());
mp.prepare();
mp.setOnPreparedListener(new OnPreparedListener() {

@Override
public void onPrepared(MediaPlayer player) {
player.seekTo(0);
player.start();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}

关于android - 只播放一个声音安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com