Android SoundPool:AudioFlinger 错误

Posted

技术标签:

【中文标题】Android SoundPool:AudioFlinger 错误【英文标题】:Android SoundPool: AudioFlinger error 【发布时间】:2012-12-07 23:10:40 【问题描述】:

我的 SoundManager 类使用 SoundPool 作为它的音频。我的声音会循环播放,开 1 秒,关 2 秒,直到被告知停止。问题是这将执行一次,然后我注意到 logcat 中有一个错误说“SoundPool:创建 AudioTrack 时出错”,然后是“AudioTrack:AudioFlinger 无法创建轨道,状态:-12”我的代码如下。知道为什么我会收到此错误吗?

public class SoundManager 

    public SoundManager(Context c) 
        mContext = c;
        sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
        spSound = sp.load(mContext, R.raw.tone4402, 1);
    
    public void Tone3(int timer) 
        (new Thread(t3)).start();
    
    final Runnable t3 = new Runnable() 
        public void run() 
            if(isPlaying == false) 
                isPlaying = true;
                Tone3Run();
            
        
    ;
    public static void Tone3Run() 
        //1 sec on, 2 sec off, repeat for 2 minute
        Log.d("Sound", "Tone3 Playing");
        long startTime = System.currentTimeMillis();
        long currentTime;
        do
        
            currentTime = System.currentTimeMillis();
            Log.e("Sound Manager", "Time:" + (currentTime - startTime));
            temp = sp.play(spSound, currentVolume, currentVolume, 1, -1, (float)1.0);
            try 
                Thread.sleep(1000);
             catch (InterruptedException e) 
            e.printStackTrace();
            

            sp.pause(temp);
            try 
                Thread.sleep(2000);
             catch (InterruptedException e) 
                e.printStackTrace();
            
         while( ((currentTime - startTime) < 120000) && (boolStop = false) );
        sp.release();
        sp = new SoundPool(1, 4, 0);
        spSound = sp.load(mContext, R.raw.tone4402, 1);
        isPlaying = false;

【问题讨论】:

-12ENOMEM,或“内存不足”。 Error Codes 感谢您的提醒,能够解决问题 【参考方案1】:

Error : AudioTrack: AudioFlinger could not create track, status: -12 属于活动轨道的总数为 32,您正在尝试创建另一个轨道。 android 仅支持 32 个曲目名称。 你能检查一下Obtain Buffer TimeOut等其他错误吗? 请尝试将您的应用程序安装到其他 Android 设备或重启您的设备进行检查。

【讨论】:

以上是关于Android SoundPool:AudioFlinger 错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Soundpool Issue

Android 上 SoundPool 的奇怪错误

Android 11 上的 SoundPool 问题

Android:应用程序终止后 SoundPool 不工作

Android Studio 中的 SoundPool 到 MediaPlayer

Android开发之SoundPool使用详解