Articles of soundpool

Soundpool加载声音名称’OMX.qcom.audio.decoder.aac’的组件已经存在,忽略了这个

我已经在后台的Application onCreate方法中实现了加载所有声音。 但是,当我加载声音时,它会给出如下错误: E / OMXMaster:名称为“OMX.qcom.audio.decoder.aac”的组件已经存在,忽略了这个组件。 这有什么问题? 有人有什么想法吗? 提前致谢 private void loadAllSounds() { new Thread(new Runnable() { @Override public void run() { soundPool.load(appContext, R.raw.compose_sound_0, 1); soundPool.load(appContext, R.raw.compose_sound_1, 1); soundPool.load(appContext, R.raw.compose_sound_2, 1); soundPool.load(appContext, R.raw.compose_sound_3, 1); } }).start(); }

使用SoundPool播放声音

我需要在我的应用程序中播放一个简短的声音。 我写了下面的代码,但我的三星手机上没有声音和奇怪的振动。 但同时这段代码在我的android模拟器上运行良好。 我的代码是: package com.samplers; import android.app.Activity; import android.media.SoundPool; import android.media.AudioManager; import android.os.Bundle; import android.view.View; import android.widget.Button; public class FixVibroActivity extends Activity { /** Called when the activity is first created. */ private Button white; private SoundPool spool; private int soundID; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); spool = new SoundPool(10, […]

在Android中获取音频文件持续时间的最佳方法是什么?

我正在使用SoundPool在我的应用程序中播放音频剪辑。 一切都很好,但我需要知道剪辑播放何时完成。 目前,我通过使用MediaPlayer实例获取每个剪辑的持续时间来在我的应用中跟踪它。 这工作正常,但加载每个文件两次看起来很浪费,只是为了得到持续时间。 我可以自己知道文件的长度(可从AssetFileDescriptor获得 )粗略计算持续时间,但我仍然需要知道采样率和通道数。 我看到了这个问题的两种可能解决方案: 弄清楚剪辑何时播放完毕(SoundClip似乎无法实现)。 有一个类可以只加载音频文件的标题,并给我采样率/通道数(理想情况下,样本计数,以获得确切的持续时间)。 有什么建议么? 谢谢,马克斯 我目前正在使用的代码(工作正常,但为此目的相当沉重): String[] fileNames = … MediaPlayer mp = new MediaPlayer(); for (String fileName : fileNames) { AssetFileDescriptor d = context.getAssets().openFd(fileName); mp.reset(); mp.setDataSource(d.getFileDescriptor(), d.getStartOffset(), d.getLength()); mp.prepare(); int duration = mp.getDuration(); // … } 在旁注中,这个问题已被提出但没有得到答案。

在Android上使用SoundPool进行无缝循环?

我试图用SoundPool类循环短(20kb),无间隙ogg文件,并且在硬件上测试时无法获得一致的结果。 它总是使用模拟器完美播放,但是当我在Nexus 1或Samsumg Galaxy Tab 10.1上进行测试时,每个循环点都会有可听见的popup或点击。 非常奇怪的是,虽然一旦应用程序启动一致,但每次重新启动应用程序时的点击次数都会略有不同,并且在极少数情况下(更常见的是在平板电脑上)循环正常播放。 使用MediaPlayer的结果并不好。 想要在android上无间隙播放音频循环是不合理的吗? 当然有人有类似的function正常工作? 如果是这样,我很想看到它如何运作的一个例子。 谢谢!

如何在Android中的不同设备上以准确的时间段播放声音

我正在Android中开发游戏,我遇到了一个非常烦人,难以发现的错误。 问题在于,当您使用SoundPool播放声音时,您实际上可以循环播放您正在播放的任何声音。 在这种情况下,问题是“跑步”的声音; 当主角运行时,这个声音会非常快速地连续执行(大约每400ms )。 现在,当在普通(不那么强大)的设备上播放声音时,例如三星SII,声音每隔500ms播放一次 – 但是,如果我在另一台设备上运行相同的代码(比方说,三星SIV,三星SIII),声音播放速度提高两倍甚至三倍。 看起来设备硬件规格越强大,它的播放速度就越快。 在某些设备上,它的播放速度非常快,您几乎听不到连续的声音。 我一直在寻找技术来设置声音播放之间的时间段的特定比率,但它不能正常工作,问题仍然存在。 有没有人知道如何修复它,使用SoundPool , MediaPlayer或Android上的任何其他声音控制API?

SoundPool错误:没有更多可用的曲目名称

我在使用soundpool课程时遇到了麻烦。 它来了: 在我的游戏应用程序(音乐应用程序顺便说一句)我需要同时重现至少32个短音,所以我声明我的音池: private SoundPool sp; sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0); 之后我加载了所需的所有MP3声音,大约80个声音,每个55KB。 我没有加载所有声音的麻烦,但它很慢! 嗯,这不是问题。 真正的麻烦是当我同时播放大约20个声音时,我的日志中出现错误: ERROR/AudioFlinger(59): no more track names available ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12 ERROR/SoundPool(26349): Error creating AudioTrack 之后,我尝试播放的每个声音都会抛出相同的错误,并且无法播放声音。 甚至没有另一个Activity / soundpool的声音。 我不知道发生了什么或如何解决它! 我应该改变声音文件的格式吗? 播放声音后我应该释放内存吗? (我正在测试三星Galaxy S I9000,2.3.3操作系统。该应用程序是2.1)

Android L SoundPool.load()回归

在Android L上 – 最新的开发者预览版(Nexus 5),SoundPool.load()方法似乎有一个回归,加载样本( 5秒,其中样本加载到pre-L系统上立即使用相同的代码。 我尝试了OGG或MP3,两者都有相同的结果。 尝试了不同的尺寸但都低于100kb。 似乎40kb或80kb没有任何区别,OGG或MP3也是如此。 加载总是大约5s延迟。 这似乎是在4.3中打破循环后SoundPool中的另一个回归。 这个问题很容易重现: pool = new SoundPool(6, AudioManager.STREAM_MUSIC, 0); // use a listener to start playback after load pool.setOnLoadCompleteListener(listener); // R.raw.sound1 is either an OGG or MP3 sample under 100kb od size int id = pool.load(context, R.raw.sound1, 1); // onLoadComplete() method of the listener is called […]

Soundpool只播放文件的前5秒。 为什么?

我在我的应用程序中使用Soundpool,到目前为止它运行良好,但我确实有一个10秒的wav文件。 不幸的是,soundpool只播放前5秒。 如何让soundpool播放整首曲目? 我已经将wav转换为 – ogg和mp3仍然是同样的问题。 它只播放前5秒。 任何帮助将非常感激。 //set up audio player mSoundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0); //load fx mSoundPoolMap.put(RAW_1_1, mSoundPool.load(this, R.raw.loop1, 1)); //playing soundpool case R.id.button1: mSoundPool.stop(mStream1); mStream1= mSoundPool.play(mSoundPoolMap.get(RAW_1_1), streamVolume, streamVolume, 1, LOOP_1_TIME, 1f); UPD Last:也许有人会在这里find它并阅读它。 似乎soundpool不能播放超过5秒。 这是他的最大值,因为更长的声音使用MediaPlayer。 我希望你不会像我那样花那么多时间)

Android SoundPool:播放结束时收到通知

这个声音很简单,我无法弄清楚为什么我找不到答案哈哈 我有一个工作的声音池类(感谢教程和我做的一些调整),它工作正常。 现在的问题是我希望能够随机改变我的背景音乐。 (并不总是在循环中有相同的音乐,但有2或3,当一个完成时,我播放其他2个中的一个)。 问题是我找不到通知音乐播放完毕的方法。 有任何想法吗 ? 贾森

SoundPool:创建AudioTrack时出错

我在使用SoundPool时遇到问题,因为它拒绝使用我的.ogg文件。 我收到此错误: AudioFlinger无法创建曲目,状态:-12 创建AudioTrack时出错 我find了一个关于这个的线索,(可能的) 答案是: 确保使用具有恒定比特率的.ogg媒体文件! 是这样的吗? (有人请确认或取消) 如果是 – 使用哪个应用程序(Audacity不支持.ogg自定义导出设置)。 如果不是 – 还有什么可能是错的? 作为旁注 – 在我使用MediaPlayer之前,但现在我想播放一些并行的声音。