Не могу воспроизвести звук в AVD - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь проработать эту книгу по программированию на 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 Ответ

1 голос
/ 25 июля 2012

жаль видеть это без ответа так долго.Я исправлял эту ошибку месяцами как в Windows, так и в Linux, даже в виртуальных машинах.Просто загрузитесь без снимка, это не намного медленнее в наше время.Я обычно загружаю эмулятор каждые несколько дней, но запускаю приложение каждые несколько минут.Есть способ запустить виртуальную машину Android с помощью Virtual box и подключить ее через ADB: http://dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html, таким образом, скорость намного лучше, поскольку она виртуализирована с архитектурой x86, а не ARM на x86.

...