如何设置用户触摸图像时播放的音频文件.
我应该在哪里存储音频文件以及我应该用什么代码来实际播放文件?我不想提出MediaPlayer界面或类似的东西.
我想这样做:
foo = (ImageView)this.findViewById(R.id.foo);
foo.setOnClickListener(this);
public void onClick(View v) {
if (foo.isTouched()) {
playAudioFile();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Cri*_*ian 62
这不会创建一个MediaPlayer界面......它只会播放你想要的声音.
Button boton = (Button) findViewById(R.id.boton);
boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = MediaPlayer.create(TestSonido.this, R.raw.slayer);
mp.start();
}
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,R.raw.slayer表示一个名为slayer.mp3存储在res/raw/文件夹中的音频文件,一旦你点击按钮,机器人将摇滚你......
您也可以使用SoundPool.
MediaPlayer 首先将整个声音数据加载到内存中然后播放,因此当我们在声音之间频繁切换时会产生一些滞后。
SoundPool是小尺寸声音文件的更好选择,并且对.ogg媒体文件产生更好的效果。
SoundPool pl = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
// 5 indicates the maximum number of simultaneous streams for this SoundPool object
pl.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
// The onLoadComplet method is called when a sound has completed loading.
soundPool.play(sampleId, 1f, 1f, 0, 0, 1);
// second and third parameters indicates left and right value (range = 0.0 to 1.0)
}
});
Button btn = findViewById(R.id.boton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int sound = pl.load(this, R.raw.sound_01, 0);
}
});
Run Code Online (Sandbox Code Playgroud)