Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:点击播放音频剪辑_Android_Audio - Fatal编程技术网

Android 安卓:点击播放音频剪辑

Android 安卓:点击播放音频剪辑,android,audio,Android,Audio,如何设置音频文件以在用户触摸图像时播放 我应该将音频文件存储在哪里?我应该使用什么代码来实际播放该文件? 我不想打开MediaPlayer界面或诸如此类的东西 我想这样做: foo = (ImageView)this.findViewById(R.id.foo); foo.setOnClickListener(this); public void onClick(View v) { if (foo.isTouched()) { playAudioFile(); } } 谢谢这

如何设置音频文件以在用户触摸图像时播放

我应该将音频文件存储在哪里?我应该使用什么代码来实际播放该文件? 我不想打开MediaPlayer界面或诸如此类的东西

我想这样做:

foo = (ImageView)this.findViewById(R.id.foo);
    foo.setOnClickListener(this);

public void onClick(View v) {
if (foo.isTouched()) {

 playAudioFile();
  }
}

谢谢

这不会导致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();
 }
});

在这种情况下,
R.raw.slayer
表示一个名为
slayer.mp3
的音频文件,该文件存储在
res/raw/
文件夹中,一旦您单击该按钮,droid将震撼您……

您也可以使用
声音池
实现同样的效果

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);

 }
});
public void aud_play(视图){
如果(!mp.isplay()){//媒体播放器未播放它。
mp=MediaPlayer.create(这个,R.raw.audio\u名称);
mp.start();
}否则{//为已经开始演奏而干杯。。。
}
}

如下面的答案所述,将
my_sound.mp3
放入
res/raw/
中,然后通过
R.raw.my_sound
引用它。但是,您有两个选择:
MediaPlayer
SoundPool
。为了有效地管理内存,您应该使用一个库来处理这些类:如果我在完成上一个音频剪辑之前单击两次按钮,会发生什么情况,我想它会播放双音频?我已经防止了双音频问题。