android - 将 void* 转换为字节数组

标签 android c++ java-native-interface

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

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

byte = void* 的内容;

最佳答案

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

由于问题的根源是 void* 像素图,我假设您想要使用 JNI 和 Java 代码的混合来创建一个包含像素的 java Bitmap 对象。

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

二、看JNI函数NewDirectByteBuffer ,它接受一个C指针并创建一个ByteBuffer,这也是Bitmap需要的Buffer。

现在很清楚了,您只需要:

  • 使用 JNI 代码创建带有像素缓冲区的 ByteBuffer
  • ByteBuffer 传递/返回到 Java 空间
  • 用这样的ByteBuffer填充位图
  • 使用 ImageView 或您的绘画例程显示它。

附注OP 负责处理对象引用以使其对 GC 友好。

关于android - 将 void* 转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25935515/

相关文章:

java - 如何使用字符串中的本地日期检查 X 天是否已经过去

java - 直接从我的 Android 应用程序发送 Whatsapp 消息

c++ - 使用 {745a17a0-74d3-11d0-b6fe-00a0c90f57da} 格式的值初始化 GUID

android - Facebook Conceal .so 文件未在 Android 项目中上传

Java native 接口(interface) - C++ 不等待 java 函数完成

java - 来自 C++ 的 JNI Java;打印输出?

android - Android Studio 3.0错误

android - EditText.getText() 可以为空吗?

c++ - 如何禁止在 C++ 2011 中调用右值对象的 const 成员函数?

c++ - 一行输入多个变量