2012-08-02 4 views
3

Je veux utiliser OpenSL` ES uniquement lorsque disponible par exemple, si la version Android> = 2.3Comment utiliser uniquement OpenSL ES si disponible

Actuellement je en Android.mk

LOCAL_LDLIBS += -lOpenSLES 

Mais cela ne fonctionnera pas si version Android < 2.3

Puis-je charger de manière dynamique la bibliothèque Open SL uniquement si la version Android> = 2.3, peut-être en utilisant System.loadLibrary?

Répondre

1

Utilisez Build.VERSION pour vérifier la version de l'API avant de charger la bibliothèque et si elle est inférieure à API 9, ne la chargez pas.

Exemple:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { 
    System.loadLibrary("xyz"); 
} 

[modifier]

OU si vous voulez avoir une bibliothèque native, le chargement dynamique OpenSL ES, vous pouvez utiliser dlopen. Vous pouvez trouver un exemple sur stackoverflow: https://stackoverflow.com/a/1142169/1145705

+0

Mais quelle bibliothèque pour Open SL ES? –

+1

Eh bien, si vous liez votre bibliothèque à OpenSLES, elle ne fonctionnera pas. Vous devez donc construire deux bibliothèques, une pour OpenSLES et une sans OpenSLES. Mais dans ce cas, vous feriez peut-être mieux de créer deux APK séparés pour la publication. Sinon, vous enverrez deux bibliothèques et l'une d'entre elles n'est jamais utilisée. Éditer: Vous pouvez y parvenir en utilisant des codes de version séparés dans votre AndroidManifest.xml. Jetez un oeil: http://developer.android.com/guide/google/play/publishing/multiple-apks.html#VersionCodes – chrulri

+0

Je me demande si je peux en quelque sorte charger dynamiquement OpenSL ES? –

Questions connexes