Android 媒体播放器无间隙循环(歌曲开始和结束时无静音)

问题描述 投票:0回答:2

我是 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 中执行此操作。

注意:我试过这个框架但没有成功。它只支持一个音频文件循环播放,但效果不佳。

android audio android-mediaplayer android-audiomanager soundpool
2个回答
0
投票

你应该使用 Soundpool 。即使我在 mediaplyer 中遇到了同样的问题,解决方案是 soundpool 这是一个 link 了解如何使用 soundpool


0
投票

您可以使用名为 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

© www.soinside.com 2019 - 2024. All rights reserved.