小编Car*_*les的帖子

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

我在使用soundpool课程时遇到了麻烦.在这里:

在我的游戏应用程序(音乐应用程序顺便说一句)我需要同时重现至少32个短音,所以我声明我的声音池:

private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);
Run Code Online (Sandbox Code Playgroud)

之后我加载了所需的所有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
Run Code Online (Sandbox Code Playgroud)

之后,我尝试播放的每个声音都会抛出相同的错误,并且无法播放声音.甚至没有另一个Activity/soundpool的声音.我不知道发生了什么或如何解决它!我应该更改声音文件的格式吗?播放声音后我应该释放记忆吗?

(我正在测试三星Galaxy S I9000,2.3.3操作系统.该应用程序是2.1)

android soundpool audiotrack

15
推荐指数
2
解决办法
2958
查看次数

Android SurfaceView 的低 FPS

我在使用 SurfaceView 时遇到了一些帧速率问题。我正在做我在一些教程中找到的典型内容(所有教程都说一样),但我无法在我的三星 Galaxy S(旧款 i9000)上达到像样的帧速率。

这是我的循环线程的代码。FPS 初始化为 30。

@Override
public void run() {
    long ticksPS = 1000/FPS;
    long startTime;
    long sleepTime;
    //fps checker
    long contms=0;
    long lasttimecheck = System.currentTimeMillis();
    int fps=0;
    while (running) {
        long time =  System.currentTimeMillis();
        if(contms>1000) {
            Log.v("FPS",String.valueOf(fps));
            contms=time-lasttimecheck;
            fps=1;
        }
        else {
            fps++;
            contms+=time-lasttimecheck;
        }
        lasttimecheck = time;

        Canvas c = null;
        startTime =time;
        try {
            c = view.getHolder().lockCanvas();
            synchronized (view.getHolder()) {
                view.onDraw(c);
            }
        } finally {
            if (c != null) {
                view.getHolder().unlockCanvasAndPost(c);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

android frame-rate bitmap surfaceview

5
推荐指数
1
解决办法
6930
查看次数