2011-05-31 3 views
0

Я разрабатываю игру и воспроизвожу звуковые звуки с использованием SoundPool и MediaPlayer. Каждый раз, когда звучит какой-либо звук, он показывает ошибку в LogCat.getAudioMode [0] error

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.

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

+0

Показать код. –

+0

@Lukas Knuth: SoundPool mSoundPool = новый SoundPool (50, AudioManager.STREAM_MUSIC, 0); HashMap mSoundPoolMap = new HashMap (); mSoundPoolMap.put («огонь», mSoundPool.load (mContext, R.raw.fire, 1)); mSoundPool.play (mSoundPoolMap.get («огонь»), streamVolume, streamVolume, 1, 0, 1); – Nuraiz

+0

Вы должны были отредактировать свой пост ... Я сделал это для вас. –

ответ

1

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

0

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

общественное окончательное ИНТ игра (INT soundID, поплавка leftVolume, поплавок rightVolume, INT приоритет, внутр цикла, поплавок скорость)

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

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

Но эта ошибка все еще наступает: 05-31 17: 02: 09.091: ERROR/AudioTrack (20897): getAudioMode [0] – Nuraiz

+0

Я не вижу в вашем коде никакого 'getAudioMode'-Array. Пожалуйста, напишите весь код, который является обязательным (отредактируйте свой пост). –

+0

@ Лукас Кнут: Я редактировал свой пост. Это полный класс, который я использую для воспроизведения звуковых звуков. Я не использую getAudioMode, это происходит в logcat, когда звучит любой звук. Надеюсь, теперь у вас проблемы. – Nuraiz