Frage

Ich verwende OpenSL ES und meine Android-App benötigt mehrere Kanäle, daher erstelle ich mehrere Player-Objekte (plus ein Player-Objekt für jede MP3-Datei, die ich abspielen muss).Dies funktioniert für eine Anwendung einwandfrei, aber wenn ich eine andere von mir erstellte App ausführe, werden beispielsweise keine Sound- und Protokolldateien abgespielt

E/AudioFlinger(  119): no more track names available
E/AudioTrack( 6884): AudioFlinger could not create track, status: -12
E/libOpenSLES( 6884): AudioTrack::initCheck status 4294967284
W/libOpenSLES( 6884): Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED)

Okay, ich habe gelesen, dass dies bedeutet, dass ich keine freien Objekte mehr habe und einige Objekte freigeben sollte.

Allerdings gem http://mobilepearls.com/labs/native-android-api/opensles/

Öffnet sich für Android unterstützt eine einzelne Motor pro Anwendung und bis zu 32 Objekte

Sind das also 32 Objekte pro Anwendung oder sind es insgesamt 32 Objekte?Wenn ja, bin ich gezwungen, Player-Objekte jedes Mal zu zerstören (und neu zu erstellen), wenn meine App inaktiv wird (onPause/onStop)?

War es hilfreich?

Lösung

Es scheint 32 Objekte pro Gerät zu sein.Also ist es besser Destroy sie, wann immer sie nicht benötigt werden (onStop, onDestroy)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top