2017-09-17 7 views
0

je veux charger le fichier « bang.ogg » de mon dossier actif à l'aide du LibGDX AssetManager:charges AssetManager sonores trop lent sur Android

am.load("bang.ogg", Sound.class); 
am.finishLoading(); 

Sur mon Xiaomi redmi 4X il faut 2 minutes pour charger ce 42Kb -du son! La taille d'Apk est 2Mb.

Je charge une image. Mais il charge dans les usines:

am.load("test.jpg", Texture.class); 

Qu'est-ce que je dois faire? Quelles sont les causes de ce problème?

+0

Vous devez fournir plus d'informations. Veuillez lire ce https://stackoverflow.com/help/how-to-ask et envisager de mettre à jour votre question. – Barns

+0

avez-vous essayé avec un autre fichier '.ogg'? – Aryan

+0

Oui, oui. Le même problème. Mais le temps de chargement dépend toujours de la taille du fichier. –

Répondre

0

Le problème avec l'implémentation Sound est qu'il va charger le fichier entier en mémoire. Selon le wiki, vous ne devriez pas l'utiliser sur Android if the file size exceeds 1MB:

Note: Sur Android, une instance sonore ne peut pas être sur 1 Mo.. Si vous avez un gros fichier, utilisez Musique

Votre audio est plus petit que 1 Mo, mais en utilisant la mise en œuvre Music vous permet de diffuser le son de sorte qu'il ne sera pas chargée au démarrage mais streamed while playing:

Pour Tout son qui dure plus de quelques secondes, il est préférable de le diffuser à partir du disque au lieu de le charger complètement dans la RAM. Libgdx fournit une interface musicale qui vous permet de faire cela.

Je voudrais essayer celui-là.

+0

Mais qu'est-ce qui peut causer ce problème? La musique est chargée en quelques millisecondes! –

+0

[this] (https://github.com/libgdx/libgdx/blob/9b8f20b2d0e96e53f0f2b98dc8f6131c810aae71/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/audio/Ogg.java) est la mise en œuvre des deux, Audio et Musique pour les sons Ogg. Pour déboguer la partie lente, créez cette classe dans votre projet dans le bon paquet 'com.badlogic.gdx.backends.lwjgl.audio' et utilisez' System.currentTimeMillis() 'pour mesurer la durée de chaque partie. Cela vous donnera une indication du problème. –

+0

Ok, je vais essayer. –