0

私は Android ゲームに取り組んでおり、標準の Android コンポーネントを使用しています。

バックグラウンド ミュージックを何度も再生するメディア プレーヤー オブジェクトがあります。私はいくつかの音楽を作曲し、それをレンダリングしました...そしてそれは完璧にループします。

今、音楽ファイルをゲームに追加したとき...すべてのループ音楽が一瞬停止する前に...しかし、それは非常に迷惑です. なぜそれが起こっているのですか?

2.3.3 電話デバイスと ICS エミュレーターでテストしましたが、毎回同じことが起こります。

これは私のコードです:

/** Play background music */
public static void playMusic() {

    if (backgroundMusic == null) {
        backgroundMusic = new MediaPlayer();
        backgroundMusic.setVolume(0.5f, 0.5f);

        try {
            backgroundMusic.setDataSource(activity.getAssets()
                    .openFd("background_music.ogg")
                    .getFileDescriptor());
            backgroundMusic.prepare();
            backgroundMusic.setAudioStreamType(AudioManager.STREAM_MUSIC);
            backgroundMusic.setLooping(true);
            backgroundMusic.start();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

PC のプレーヤーで同じファイルを再生すると、ループしてとてもいい音になります... これを修正するにはどうすればよいですか? Tnx!

4

2 に答える 2

0

私はこれを機能させる方法を見つけたと思います...

コードを次のように変更しました。

/** Play background music */
public static void playMusic() {

    if (backgroundMusic == null) {
        backgroundMusic = new MediaPlayer();
        backgroundMusic.setVolume(0.5f, 0.5f);
        AssetFileDescriptor afd;
        try {
            afd = activity.getAssets().openFd(
                    "background_music.ogg");
            backgroundMusic.setDataSource(afd.getFileDescriptor(),
                    afd.getStartOffset(), afd.getLength());
            backgroundMusic.setLooping(true);
            backgroundMusic.prepare();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        backgroundMusic.start();
    }

}

今では問題なくループしています...問題は、その理由がよくわからないことです...

これが私と同じ問題を抱えていた一部の人々に役立つことを願っています.

乾杯!

于 2013-03-21T18:17:26.077 に答える