2012-02-23 1 views
1

Я пытаюсь работать с этой книгой по программированию на Android, и одним из примеров является воспроизведение звуков с использованием SoundPool.Невозможно воспроизвести звук в AVD

Однако он всегда дает мне ту же ошибку в 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

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