2012-02-21 4 views
2

Je crée un jeu pour Android qui doit jouer un petit bip chaque fois qu'un utilisateur touche un certain objet.android media player delay

Pour ce faire, j'ai ce code simple pour créer le lecteur multimédia. bip est un petit fichier .ogg de ~ 1,5 sec.

MediaPlayer mp = MediaPlayer.create(getContext(), R.raw.beep); 
mp.setVolume(0.5f, 0.5f); 

et l'utiliser comme ceci

mp.start(); 

Le problème que j'ai est que mon jeu utilise la toile Android, et le fil qui tire sur la toile appelle également mp.start(). J'ai découvert que jouer du son prenait pas mal de temps, et il est très varié dans le temps. Parfois 1ms, parfois 15ms. Cela semble causer un léger ralentissement de mon jeu, car la toile androïde est plutôt lente.

J'ai regardé les journaux et je ne semble pas avoir le garbage collection provoquant le retard. Je me demande si quelqu'un peut me donner un conseil pour réduire ce délai

EDIT - Je viens de découvrir que MediaPlayer est conçu pour les fichiers son plus longs, et SoundPool est mieux pour les fichiers audio plus courts. Cependant, je charge le fichier dans le mediaPlayer seulement une fois, donc je ne vois pas comment cela devrait faire la différence. Je vais le tester si

Répondre

1

désolé pour mon anglais

utilisation SOUNDPOOL au lieu de MediaPlayer MediaPlayer cause de besoin libérer de la mémoire après chaque méthode d'appel ou un appel mp.release() après chaque appel du joueur

SoundPool tutorial here