2012-02-23 20 views
1

私はアンドロイドプログラミングでこの本を読もうとしています。その1つの例は、SoundPoolを使用してサウンドを再生する方法です。AVDでサウンドを再生できない

AudioFlinger could not create track, status -12. 

私はエラーをGoogleで検索し、誰もがあまりにも多くのサウンドを再生しようとしているから派生しているように見えるために:それは常に私にLogCatで同じエラーを与えるしかし

。しかし、私は音を再生しようとする最初の試みに失敗します。 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 VMを実行し、ADB経由で接続する方法があります: http://dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html したがって、x86ではARMではなくx86仮想化されているのでスピードがはるかに優れています。

関連する問題