ошибка getAudioMode [0] - PullRequest
       17

ошибка getAudioMode [0]

0 голосов
/ 31 мая 2011

Я занимаюсь разработкой игры и воспроизведением звуков с использованием SoundPool и MediaPlayer. Каждый раз, когда воспроизводится любой звук, в LogCat отображается ошибка.

public class MusicSoundResources {

    private static final String CLASS_TAG = "SoundResources";

    private static MusicSoundResources _instance;
    public static HashMap<String, MediaPlayer> mSoundPoolMap;
    private static AudioManager  mAudioManager;
    private static Context mContext;

    public MusicSoundResources() {

    }

    public static void initSounds(Context theContext) {
         mContext = theContext;
         mSoundPoolMap = new HashMap<String, MediaPlayer>();
         mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);

         loadSounds();
    }

    private static void loadSounds()    {
        mSoundPoolMap.put("swallowed", MediaPlayer.create(mContext, R.raw.swallowed));
    }

    public static void playSound(String soundTrackIndex, boolean loop) {
        MediaPlayer mediaPlayer = mSoundPoolMap.get(soundTrackIndex);
        float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

        mediaPlayer.setVolume(streamVolume, streamVolume);
        mediaPlayer.setLooping(loop);
        mediaPlayer.start();
    }
}

Это два журнала, которые отображают:

05-31 15:02:56.400: ERROR/AudioTrack(2384): getAudioMode[0]
05-31 15:02:56.400: ERROR/AudioR2VS(2384): The 11025 sample rate is not supported by R2VS solution.

Та же проблема возникает при использовании SoundPool.

Подскажите, какова поддерживаемая частота дискретизации.

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Наконец я получил ответ за это. Эта ошибка возникает, когда мы воспроизводим звуки с битрейтом выше 11025 Гц. Это внутренняя ошибка Android Media Player.

0 голосов
/ 31 мая 2011

Последний параметр метода play() представляет собой float, а не int:

публичный финал int play (int soundID, float leftVolume, float rightVolume, int priority, цикл int, float )

Это должно работать:

mSoundPool.play(mSoundPoolMap.get("fire"), streamVolume, streamVolume, 1, 0, 1.0);
...