0

当我在 android studio 中单击一个按钮时,我只想播放一个 mp3 文件。

我的问题是,我使用这两种方法播放声音,但由于某种原因,我听到它就像一个极度失真的超级慢动作声音。如果我通常打开文件就可以了。

!!!!!方法1:

我宣布:

SoundPool mySound;
int soungId;

我初始化:

mySound  = new SoundPool(1, AudioManager.STREAM_MUSIC,0);
soungId = mySound.load(this, R.raw.asd,1);

然后是使用一个动作监听器:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mySound.play(soungId,1,1,1,0,1);
    }
});

!!!!!方法2:

我声明:

MediaPlayer mp = null;

我使用监听器:

button.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(View view) {
        managerOfSound();
    }
});

我的 managerOfSound 方法:

public void managerOfSound() {
if (mp != null) {
mp.reset();
mp.release();
}
mp = MediaPlayer.create(this, R.raw.www);
mp.reset();
mp.start();
}
4

2 回答 2

0

可能是因为MaxStreams最大数(最大并发流数)的Soundpool实例太低了

SoundPool mySound;
mySound  = new SoundPool(10, AudioManager.STREAM_MUSIC,0);
于 2017-02-13T17:38:14.843 回答
-2

尝试这个,

MediaPlayer mp = new MediaPlayer();

// Set data source -
setDataSource("/sdcard/path_to_song");

// Play audio
mp.start();

// Pause audio
mp.pause();

// Reset mediaplayer
mp.reset();

// Get song length duration - in milliseconds
mp.getDuration();

// Get current duration - in milliseconds
mp.getCurrentDuration();

// Move song to particular second - used for Forward or Backward
mp.seekTo(positon); // position in milliseconds

// Check if song is playing or not
mp.isPlaying(); // returns true or false

http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

于 2017-02-13T17:12:14.200 回答