7 java audio streaming android media-player
我目前需要在Android设备上实现一个可以打开实时音频流并将其播放回用户的应用程序.这不是什么大问题,我已经成功建立了一个流媒体服务器并让它适用于一个文件.但问题是,我如何一次流式播放多个音频文件?
当我打开多个流(使用MediaPlayer)并准备和播放每个文件时,我只能听到一个文件中的音频.我不确定目前是否可行,但我希望是这样.
我研究过使用SoundPool,但它似乎只适用于本地媒体,我必须有这种流媒体,因为它对于回放速度很重要(没有等待时间等).
非常感谢任何帮助或见解!提前致谢!
我之前正在修改一个应用程序,并且遇到了类似的问题并且能够修复它,只是我没有流式传输音频。希望这可以帮助您,您需要根据您的目的对其进行修改:
import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;
import android.util.SparseIntArray;
Run Code Online (Sandbox Code Playgroud)
实例化 SoundPool 和 SparseIntArray 我在这里使用声音文件,您必须修改这部分。
private static SoundPool soundPool;
private static SparseIntArray soundPoolMap;
public static final int S1 = R.raw.good_1, S2 = R.raw.bad_1,
P1 = R.raw.power_1,
P2 = R.raw.power_2,
P3 = R.raw.power_3,
P4 = R.raw.power_4,
P5 = R.raw.power_5,
WIN = R.raw.round_win;
Run Code Online (Sandbox Code Playgroud)
初始化您的声音并将它们添加到地图中
public static void initSounds(Context context)
{
soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new SparseIntArray(8);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId,
int status) {
loaded = true;
}
});
soundPoolMap.put(S1, soundPool.load(context, R.raw.good_1, 1));
soundPoolMap.put(S2, soundPool.load(context, R.raw.bad_1, 2));
soundPoolMap.put(P1, soundPool.load(context, R.raw.power_1, 3));
soundPoolMap.put(P2, soundPool.load(context, R.raw.power_2, 4));
soundPoolMap.put(P3, soundPool.load(context, R.raw.power_3, 5));
soundPoolMap.put(P4, soundPool.load(context, R.raw.power_4, 6));
soundPoolMap.put(P5, soundPool.load(context, R.raw.power_5, 7));
soundPoolMap.put(WIN, soundPool.load(context, R.raw.round_win, 8));
}
Run Code Online (Sandbox Code Playgroud)
播放声音
public static void playSound(Context context, int soundID)
{
float volume = 1;
if(soundPool == null || soundPoolMap == null)
{
initSounds(context);
}
soundPool.play(soundPoolMap.get(soundID), volume, volume, 1, 0, 1f);
}
Run Code Online (Sandbox Code Playgroud)
一个例子:playSound(this, P1);
发生的情况是我正在使用SoundPool类,然后使用SparseIntArray映射音频流
| 归档时间: |
|
| 查看次数: |
4554 次 |
| 最近记录: |