2017-07-31 1 views
1

Dans mon projet Android, je souhaite accéder à un fichier dessinable à l'aide de c/C++ à partir de android-ndk, comme R.drawable.some_drawable.xml.Comment accéder au fichier dessinable à partir de NDK dans Android

Comment puis-je obtenir une telle fonctionnalité?

+0

vous ne pouvez pas, que voulez-vous faire cela? – pskink

+0

J'ai un fichier que je n'aime pas mettre dans les actifs ou le dossier brut. Aucune suggestion ? –

+0

donc le lire de c/C++ en utilisant le chemin complet, mais vous aurez accès à des données brutes, pas à l'objet 'Drawable' – pskink

Répondre

1

AFAIK, en utilisant JNI vous êtes limité à certains types de données primitifs:

La correspondance entre les types de données Java et les types de données utilisés dans le code natif est assez simple. Le schéma de dénomination reste le même: le nom du type de données natif est précédé du caractère 'j', suivi de tous les noms de type de données en minuscules équivalents à Java. JNI inclut également un autre type de données nommé jsize, qui stocke la longueur ou un tableau ou une chaîne.

void -> void : None 
byte -> jbyte : 8-bit signed. Range is -27 to 27 - 1 
int -> jint : 32-bit signed. Range is -231 to 231 - 1 
float -> jfloat : 32 bits. Represent a real number as small as 1.4 x 10-45 and as big as 3.4 x 1038 (approx.), positive or negative 
double -> jdouble : 64 bits. Represent a real number as small as 4.9 x 10-324 and as big as 1.7 x 10308 (approx.), positive or negative 
char -> jchar : 16-bit unsigned. Range is 0 to 65535 
long -> jlong : 64-bit signed. Range -263 to 263 - 1 
short -> jshort : 16-bit signed. Range is -215 to 215 - 1 
boolean -> jboolean : Unsigned 8 bits. true and false 

Votre solution serait d'enregistrer votre Drawable dans le dossier de cache et de transmettre l'adresse de fichier à votre code NDK et le lire en C/C++.

How can I write a Drawable resource to a File?