Android Can';不要在AVD中播放声音

Android Can';不要在AVD中播放声音,android,android-emulator,soundpool,Android,Android Emulator,Soundpool,我正在努力阅读这本关于android编程的书,其中一个例子是如何使用SoundPool播放声音 然而,在LogCat中它总是给我同样的错误: AudioFlinger could not create track, status -12. 我在谷歌上搜索了这个错误,对其他人来说,这似乎是因为试图播放太多的声音。但是我的第一次尝试播放声音失败了。我在使用MediaPlayer时也会遇到同样的错误。在AVD中是否有我没有正确设置的内容?音频播放支持已打开 我也把它装到我的手机上,效果很好。它只在模

我正在努力阅读这本关于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;
    }
}

很抱歉看到这么长时间没有答复。几个月来,我一直在Windows和Linux上遇到这个bug,甚至是在虚拟机上。只需在没有快照的情况下启动,现在不会慢很多。 我通常每隔几天启动一个模拟器,但每隔几分钟启动一个应用程序。 有一种方法可以使用Virtual box运行Android虚拟机,并通过ADB连接:
因此,速度要快得多,因为它是x86虚拟化的,而不是x86上的ARM。

很抱歉看到这么长时间没有回答这个问题。几个月来,我一直在Windows和Linux上遇到这个bug,甚至是在虚拟机上。只需在没有快照的情况下启动,现在不会慢很多。 我通常每隔几天启动一个模拟器,但每隔几分钟启动一个应用程序。 有一种方法可以使用Virtual box运行Android虚拟机,并通过ADB连接: 因此,速度要比x86上的ARM快得多,因为它是x86虚拟化的