1

私はAndroidプログラミングについてこの本を読み進めようとしていますが、その例の1つは、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;
    }
}
4

1 に答える 1

1

これが長い間答えられていないのを見て申し訳ありません。私は、仮想マシンでも、WindowsとLinuxの両方でこのバグに何ヶ月も遭遇しています。スナップショットなしで起動するだけで、最近はそれほど遅くはありません。私は通常、エミュレータを数日ごとに起動しますが、アプリは数分ごとに起動します。仮想ボックスを使用してAndroidVMを実行し、ADBを介して接続する方法は次のとおりです。http: //dev.blogs.nuxeo.com/2011/10/speeding-up-the-android-emulator.html したがって、速度はx86上のARMではなくx86が仮想化されているため、はるかに優れています。

于 2012-07-24T20:37:38.890 に答える