2017-09-17 3 views
0

ich die ‚bang.ogg‘ Datei von meinem Vermögen Ordner mit dem Libgdx Assetmanager laden mag:Assetmanager Lasten klingen zu langsam auf Android

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

Auf meinem Xiaomi Redmi 4X es dauert 2 Minuten, um diese 42Kb zu laden -klingen! Apk-Größe ist 2 MB.

Ich lade ein Bild. Aber es lädt in Mühlen:

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

Was ich zu tun habe? Was verursacht dieses Problem?

+0

Sie müssen weitere Informationen bereitstellen. Bitte lesen Sie diese https://stackoverflow.com/help/how-to-ask und überlegen Sie, Ihre Frage zu aktualisieren. – Barns

+0

haben Sie es mit anderen '.ogg' Dateien versucht? – Aryan

+0

Ja, das tue ich. Dasselbe Problem. Die Ladezeit hängt jedoch immer noch von der Dateigröße ab. –

Antwort

0

Das Problem mit der Implementierung Sound ist, dass es die gesamte Datei in Arbeitsspeicher lädt. Nach dem Wiki, sollten Sie es nicht auf Android verwenden if the file size exceeds 1MB:

Anmerkung: Auf Android, eine Sound-Instanz kann über 1 MB groß nicht sein. Wenn Sie eine größere Datei haben, verwenden Sie Musik

Ihre Audio kleiner als 1MB aber die Music Implementierung ermöglicht es Ihnen, die Audio-Stream, damit es nicht beim Start geladen wird erhalten, aber streamed while playing:

Für Jedes Geräusch, das länger als ein paar Sekunden dauert, sollte vorzugsweise von der Festplatte gestreamt werden, anstatt es vollständig in den Arbeitsspeicher zu laden. Libgdx bietet eine Musikschnittstelle, mit der Sie das tun können.

Ich würde dem einen Versuch geben.

+0

Aber was kann dieses Problem verursachen? Musik wird in wenigen Millisekunden geladen! –

+0

[this] (https://github.com/libgdx/libgdx/blob/9b8f20b2d0e96e53f0f2b98dc8f6131c810aae71/backends/gdx-backend-lwjgl/src/com/badlogic/gdx/backends/lwjgl/audio/Ogg.java) ist die Implementierung von beiden, Audio und Musik für Ogg-Sounds. Um den langsamen Teil zu debuggen, erstellen Sie diese Klasse in Ihrem Projekt im richtigen Paket 'com.badlogic.gdx.backends.lwjgl.audio' und verwenden Sie' System.currentTimeMillis() ', um zu messen, wie lange jeder Teil dauert. Es gibt Ihnen einen Hinweis auf das Problem. –

+0

Ok, ich werde es versuchen. –

Verwandte Themen