无法在AVD中播放声音

时间:2012-02-23 21:06:19

标签: android android-emulator soundpool

我正在尝试使用这本关于android编程的书,其中一个例子是如何使用SoundPool播放声音。

但是它总是在LogCat中给我同样的错误:

AudioFlinger could not create track, status -12.

我搜索了这个错误,其他人似乎都是试图播放太多声音。但是我的第一次尝试播放声音失败了。使用MediaPlayer时出现同样的错误。有没有我在AVD中没有正确设置的东西?音频播放支持已启用。

我也将它加载到手机上,它运行正常。它只在模拟器中失败。显然,这是由于模拟器中的一个错误,如果启用了快照,声音将无法播放。

创建了一个新的AVD并且它可以工作,但声音非常不稳定。这是正常的吗?

public class SoundPoolTest extends Activity implements OnTouchListener {
    SoundPool soundPool;
    int explosionId = -1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.setOnTouchListener(this);
        setContentView(textView);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
        try {
            AssetManager assetManager = getAssets();
            AssetFileDescriptor descriptor = assetManager
                    .openFd("explosion.ogg");
            explosionId = soundPool.load(descriptor, 1);
        } catch (IOException e) {
            textView.setText("Couldn't load sound effect from asset, "
                    + e.getMessage());
        }
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            if (explosionId != -1) {
                soundPool.play(explosionId, 1, 1, 0, 0, 1);
            }
        }
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

很抱歉看到这个问题没那么久了。我已经在Windows和Linux上使用了几个月,甚至在虚拟机中。只是没有快照启动,现在速度不是很慢。 我通常每隔几天启动一个模拟器,但每隔几分钟启动一个应用程序。 有一种方法可以使用虚拟盒运行Android VM,并通过ADB在此处连接: http://dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html 因此,速度更好,因为它是x86虚拟化而不是x86上的ARM。