【发布时间】:2017-03-28 04:46:35
【问题描述】:
我发现 Android SoundPool 只能播放 6 秒的 mp3,我该如何打破这个限制?除了 MediaPlay,还有其他的 mp3 播放器吗?
【问题讨论】:
我发现 Android SoundPool 只能播放 6 秒的 mp3,我该如何打破这个限制?除了 MediaPlay,还有其他的 mp3 播放器吗?
【问题讨论】:
您也可以继续使用 soundpool 来获得更长的声音。您可以播放近 30 秒左右。但是您可能需要修改文件。您应该将您的声音文件转换为 ogg,使用 soundpool 时它总是给我更好的结果。
现在,我使用在线转换器来做到这一点。您可以通过在线转换器完成所有这些步骤。 这是我使用的链接:http://audio.online-convert.com/convert-to-ogg
【讨论】:
使用媒体播放器类代替 Soundpool
首先创建媒体播放器对象
MediaPlayer mediaPlayer;
之后初始化它 - 在项目的 Res 文件夹中创建一个 Raw 文件夹 并将 MP3 文件放入这个 Raw 文件夹并初始化。
mediaPlayer = MediaPlayer.create(this, R.raw.song);
之后使用这两种方法进行播放和暂停
mediaPlayer.play();// 播放音乐mediaPlayer.Pause();// 暂停音乐
更多关于媒体播放器的知识
使用这些教程
https://www.tutorialspoint.com/android/android_mediaplayer.htm
如果您想使用 URL 播放音乐,请使用本教程
【讨论】:
首先,soundpool 仅用于小尺寸音频,时间不受限制。所以认为它只能播放 6 秒的音频是完全错误的,它可以缓冲的文件大小限制为最大 1 兆字节。
所以你可以使用最大 1M 的大小。
我怎样才能打破这个限制?
你可以使用android提供的MediaPlayer类,see the documentation.
如果你想要step by step tutorial, here is a one.
Here你可以阅读更多。
以下是如何播放可用作本地原始资源(保存在应用程序的 res/raw/ 目录中)的音频的示例:
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you
以下是您可以如何从系统中本地可用的 URI 播放(例如,您通过内容解析器获得):
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
【讨论】:
soundpool 或mediaplayer 的<1mb 文件?