将void *转换为字节数组

时间:2014-09-19 13:47:59

标签: android c++ java-native-interface

我需要转换一个带有位图数据的void *。 void *是从cpp函数返回的,我需要做的是转换这个传递给Jni的void *,并在Java中将其显示为位图。

Void * buffer = CppClass->getbuffer();
ByteArray byte[];

byte = void *;

的内容

1 个答案:

答案 0 :(得分:1)

由于java没有void*且jni没有ByteArray,因此不清楚你的执行环境是什么。

由于问题的根源是void * pixel map,我假设你想要创建一个带有像素的java Bitmap对象,混合使用JNI和Java代码。

首先看一下Bitmap类,有一个名为copyPixelsFromBuffer的方便函数,看起来很有用,需要Buffer

其次,查看JNI函数NewDirectByteBuffer,它需要一个C指针并创建一个ByteBuffer,它也是Bitmap所需的缓冲区。

现在很明显,你只需要:

  • 使用带有JNI代码的像素缓冲区
  • 创建ByteBuffer
  • ByteBuffer传递给Java land
  • 使用此Bitmap填充ByteBuffer
  • 使用ImageView或您的绘画例程显示它。

P.S。由OP处理对象引用以消除GC友好关系。