我是 Android 开发的新手,正在研究循环播放短音频文件的概念,我读了很多 Stack Overflow 问题并尝试过,但我无法实现。但是这个概念是可行的,我看到商店里有很多应用程序并且运行良好,我真的不知道他们是怎么做到的。
https://play.google.com/store/apps/details?id=ipnossoft.rma.free&hl=en
https://play.google.com/store/apps/details?id=net.relaxio.sleepo&hl=en
我检查了那些使用 OGG 格式的短音频的应用程序。
而且他们可以同时播放多个音频,没有间隙。
有没有其他可用的库或框架?在 Android 中执行此操作。
注意:我试过这个框架但没有成功。它只支持一个音频文件循环播放,但效果不佳。
你应该使用 Soundpool 。即使我在 mediaplyer 中遇到了同样的问题,解决方案是 soundpool 这是一个 link 了解如何使用 soundpool
您可以使用名为 SoundPool 的内置 android 库执行此操作以使用 import
import android.media.SoundPool;
然后通过
初始化SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
//DO SOMETHING WHEN MEDIA HAS LOADED HERE
}});
soundID = soundPool.load(this, R.raw.loop, 1);
重要的是要注意,在类中应该找到一个名为 soundID 或任何其他名称的全局变量,并且音频 R.raw.loop 或任何其他名称应该存在。
播放或暂停循环使用这个
void playSound() throws Exception{
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float volume= audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)/audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
soundPool.play(soundID, volume, volume, 1, -1, 1f);
}
void pauseSound() throws Exception{
soundPool.pause(soundID);
}
请在此处的 github 上关注我Sanne