2016-09-21 32 views
0

我有一個調用setPitch(id,1.0f)的Sound對象。出於某種原因,在大多數設備上,這似乎工作,聽起來很完美(我意識到1.0f是正常的)。但是在銀河注3上,它會產生一種難看的深沉聲音,然後在再次調用播放方法後,聲音對象不再發出任何聲音(每當玩家獲得點時,我都會播放聲音對象)。設置音調是必要的,因爲我爲我的遊戲的其他部分使用了相同的聲音對象。我將鏈接下面的代碼,但我覺得這可能是一個libgdx毛刺/硬件問題。謝謝!Libgdx聲音| setPitch導致Sound對象停止播放/製造噪音

if (contact.getFixtureA().getFilterData().categoryBits == Config.CATEGORYBIT_BONUS) { 
    final BonusFixtureUserData userData = (BonusFixtureUserData) contact.getFixtureA().getUserData(); 
    if (userData.bonus.scorable) {    
     long id = AudioManager.getAudioManager().playSound(AudioManager.getAudioManager().bonusSound); 
     AudioManager.getAudioManager().bonusSound.setPitch(id, Config.pointSoundPitch * 2); 
    } 
} 

AudioManager類(下面)

public class AudioManager { 

private static AudioManager audioManager; 

public Sound jumpSound, deathSound, pointSound, bonusSound; 

public static AudioManager getAudioManager() { 
    if (audioManager == null) { 
     audioManager = new AudioManager(); 
    } 
    return audioManager; 
} 

private float sound_volume, music_volume; 

private AudioManager() { 
    sound_volume = 1f; 

} 

public void setAudio() { 
    deathSound = (Sound) Game.assetManager.get("sound/death.mp3"); 
    jumpSound = (Sound) Game.assetManager.get("sound/tap.mp3"); 
    pointSound = (Sound) Game.assetManager.get("sound/point.mp3"); 
    bonusSound = (Sound) Game.assetManager.get("sound/point.mp3"); 
} 

public long playSound(Sound sound) { //Returns soundID (Sound can play multiple times, soundID refers to which instance is playing) 
    long id = sound.play(); 
    sound.setLooping(id, false); 
    sound.setVolume(id, sound_volume); 
    return id; 
} 

public static void dispose() { 
    audioManager = null; 
} 

} 

Config.pointPitchSound是1.0F和1.07f整個遊戲之間實際上等於。當它是1.0f時,它會發生故障。我沒有嘗試過其他的價值觀,但我想他們會這樣做。

回答

0

LibGDX音頻實現完全取決於Android。 Sound.setPitch實際上調用SoundPool.setRateAndroid documentation of setRate

嘗試將聲音轉換爲OGG格式,已知SoundPool在某些設備上播放MP3文件時出現問題。

+0

不幸的是,轉換成ogg文件並沒有解決問題:\ – XPatStudios

+0

當音高> = 2時會出現這種情況。奇怪的是,不是嗎? – XPatStudios

+0

哦,這並不奇怪,看看我發送的Android文檔。 'float:播放速率(1.0 =正常播放,範圍爲0.5到2.0)'我想這就是原因。 – pr0gramist