Hey Leute
Arbeite gerade immer noch fleißig an meinem Spiel, bin aber jetzt auf nervige Warnungen in der Konsole gestoßen…
Ich arbeite mit einem SoundPool um verschiedene Sounds in meinem Spiel gleichzeitig und effektiv abspielen zu können.
Allerdings erhalte ich bei dem Abspielen von Sounds ständig eine Warnung in der Konsole (LogCat):
07-27 20:22:05.780: W/AudioTrack(21614): AUDIO_OUTPUT_FLAG_FAST denied by client
Der Sound wird zwar problemlos (augenscheinlich) ausgeführt allerdings stört mich die Warnung. Und ich finde einfach keine Erklärung für ihre Ursache!
Hier der relevante Teil meines Codes:
Sound Code
private static SoundPool sp = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
private static HashMap<Integer, Integer> sounds = new HashMap<>();
private static Vector<Integer> sounds_important = new Vector<>();
public static void loadSound(int id, int priority, boolean important){
if(sounds_important.contains(id)|| id==-1){
return;
}
sounds.put(id, sp.load(IllumitanGame.ig.getContext(), id, priority));
if(important){
sounds_important.add(id);
}
}
public static void unloadSounds(){
Vector<Integer> remove = new Vector<>();
for(int i : sounds.keySet()){
if(sounds_important.contains(i)){
continue;
}
remove.add(sounds.get(i));
sp.unload(sounds.get(i));
}
for(Integer i : remove){
sounds.remove(i);
}
}
public static void unloadSound(int id){
if(!sounds_important.contains(id)|| id==-1){
return;
}
sp.unload(sounds.get(id));
sounds.remove(id);
}
public static void playSound(int id){
playSound(id, 70);
}
public static void playSound(int id, GameEntity target, GameEntity source){
float xDiff = (target.rGetMiddleHorizontal())-(source.rGetMiddleHorizontal());
playSound(id, (int)xDiff, 70);
}
public static void playSound(int id, int xDiff, int standard){
if(xDiff==-1 || xDiff==0){
playSound(id, standard);
return;
}
boolean direction_right = xDiff>0;
float volume_percent = 80 - 0.05f*xDiff;
playSound(id, direction_right?volume_percent/2:volume_percent, direction_right?volume_percent:volume_percent/2);
}
public static void playSound(int id, float volume_percent_both){
playSound(id, volume_percent_both, volume_percent_both);
}
public static void playSound(int id, float volume_percent_left, float volume_percent_right){
if(sound_enabled){
if(id!=-1){
sp.play(sounds.get(id),volume_percent_left/100,volume_percent_right/100,1,0,1.0f);//In dieser Zeile der letzte Wert ist die sogenannte "rate" auf welche die Meldung wahrscheinlich hinaus will
}
}
}```
Verwendung von Sound Code
public void playSound(int skill_centre){
float distance = Math.abs(Camera.getCurrentGameCentreX()-skill_centre);
AudioLib.playSound(sound_id, 80-0.05f*distance); //Der entsprechende Sound mit der 'sound_id' wird im Vorraus geladen. Die Rechnung nach der 'sound_id' generiert eine Lautstärke, passend zur Entfernung des Tons zur Kamera
Also wie gesagt werden die Sounds abgespielt. Dennoch wird jedes Mal diese nervige und "spammende" Meldung ausgedruckt.
Ich hab mich im Internet schon danach erkundigt aber keine zufriedenstellende Ergebnisse gefunden...
Würde mich sehr auf eine Antwort von euch freuen :)
Grüße Felix