我想使用SoundPool类来创建播放速度效果。快速或慢速播放声音(1x,0.5x,2x等)。 但问题是soundpool只处理小文件。当我给一个大文件。它没有发挥任何作用。 我想知道是否可以加载音乐流(我的大型音频文件的一些字节)并通过soundpool播放它。任何想法。??
这是我的soundPool播放歌曲的代码
AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;
soundID = soundPool.load(Environment.getExternalStorageDirectory()+"/cm.mp3", 1);
soundPool.play(soundID, volume, volume, 1, 0, 1.0f);
我找到了JetPlayer和AudioTrack课程,但我找不到任何好的教程来处理这个问题。
答案 0 :(得分:1)
在使用SoundPool.setOnLoadCompleteListener
播放文件之前,您需要检查文件是否已成功加载public void loadSound (String strSound, int stream) {
boolean loaded = false;
mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
try {
stream= mSoundPool.load(aMan.openFd(strSound), 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Is the sound loaded already?
if (loaded) {
mSoundPool.play(stream, streamVolume, streamVolume, 1, LOOP_1_TIME, 1f);
}
}
其中aMan是
AssetFileDescriptor aMan = getAssets();