如何在 Android 中从 NDK 访问可绘制文件
Posted
技术标签:
【中文标题】如何在 Android 中从 NDK 访问可绘制文件【英文标题】:How to access drawable file from NDK in Android 【发布时间】:2017-07-31 08:35:13 【问题描述】:在我的 android 项目中,我想使用 android-ndk 中的 c/c++ 访问可绘制文件,例如 R.drawable.some_drawable.xml。
我怎样才能实现这样的功能?
【问题讨论】:
你不能,你想这样做是为了什么? 我有一个不喜欢放入资产或原始文件夹的文件。有什么建议吗? 所以使用完整路径从 c/c++ 读取它,但您将可以访问原始数据,而不是任何Drawable
对象
只是想确定是否有任何 api 可用。原始数据就好了。
这里有所有的 API:developer.android.com/ndk/guides/stable_apis.html
【参考方案1】:
AFAIK,使用 JNI 您仅限于某些原始数据类型:
Java 数据类型和本机代码中使用的数据类型之间的映射非常简单。命名方案保持不变:本机数据类型名称前面是字符“j”,后面是与 Java 等效的所有小写数据类型名称。 JNI 还包括另一种名为 jsize 的数据类型,它存储长度或数组或字符串。
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
您的解决方案是将您的 Drawable 保存在缓存文件夹中,并将文件地址传递给您的 NDK 代码并用 C/C++ 读取它。
How can I write a Drawable resource to a File?
【讨论】:
以上是关于如何在 Android 中从 NDK 访问可绘制文件的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse、Android NDK、android.mk - 访问被拒绝
如何设置环境变量以便NDK中的CMakelists.txt可以访问?