2012-02-23 57 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上,我一直在使用這個bug幾個月,甚至在虛擬機上。無需快照即可啓動,現在速度並不慢。 我通常啓動模擬器每隔幾天,但啓動應用每隔幾分鐘。 有使用虛擬框運行的是Android虛擬機,它通過ADB在此連接方式: http://dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html 因此,速度要好得多,因爲它是虛擬化的x86,而不是ARM在x86。