jni c 传递对象到java_JNI将二进制数据从C传递到Java
我需要帮助将二进制数据传递给
Java.我正在尝试使用jbytearray但是当数据进入Java时它看起来很糟糕.有人可以帮我一把吗?
这是一些示例代码的片段.首先是原生C面:
printf("Building audio array copy\n");
jbyteArray rawAudioCopy = env->NewByteArray(10);
jbyte toCopy[10];
printf("Filling audio array copy\n");
char theBytes[10] = {0,1,2,3,4,5,6,7,8,9};
for (int i = 0; i < sizeof(theBytes); i++) {
toCopy[i] = theBytes[i];
}
env->SetByteArrayRegion(rawAudioCopy,0,10,toCopy);
printf("Finding object callback\n");
jmethodID aMethodId = env->GetMethodID(env->GetObjectClass(obj),"handleAudio","([B)V");
if(0==aMethodId) throw MyRuntimeException("Method not found error",99);
printf("Invoking the callback\n");
env->CallVoidMethod(obj,aMethodId, &rawAudioCopy);
然后是Java回调方法:
public void handleAudio(byte[] audio){
System.out.println("Audio supplied to Java [" + audio.length + "] bytes");
byte[] expectedAudio = {0,1,2,3,4,5,6,7,8,9};
for (int i = 0; i < audio.length; i++) {
if(audio[i]!= expectedAudio[i])
System.err.println("Expected byte " + expectedAudio[i]
+ " at byte " + i + " but got byte " + audio[i]);
else System.out.print('.');
}
System.out.println("Audio passed back accordingly!");
}
调用回调时,我得到以下输出:
library loaded!
Audio supplied to Java [-2019659176] bytes
Audio passed back accordingly!
jni c 传递对象到java_JNI将二进制数据从C传递到Java相关推荐
- android activity之间传递对象,Android Activity之间的数据传递
一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用 startActivity(Intent ...
- java intent bundle_Android 通过Intent使用Bundle传递对象详细介绍
Android 通过Intent使用Bundle传递对象 Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法. 被传递的对象需要先实现序列化, ...
- h5如何上传文件二进制流_HTML5新特性之文件和二进制数据的操作
http://www.cnblogs.com/jscode/archive/2013/04/27/3572239.html 历史上,JavaScript无法处理二进制数据.如果一定要处理的话,只能使用 ...
- Android JNI 传递对象
JNI初步入门后,在传递数据的时候,遇到一个需求:有多个数据需要在Java与C代码之间进行传递.如果都做为函数参数传入,则函数很长很难看,并且多个数据的返回也不好实现.所以想到了把数据打包后传递.这在 ...
- 如何通过JNI传递对象执行回调
如何通过JNI传递对象执行回调 JNI的全称是java native interface,用来调用某些特定于系统平台或者硬件的操作,但是它只能调用c/c++的代码,若是其它语言代码,只能通过c/c++ ...
- JNI开发-C/C++传递对象到Java
JNI开发有时需要C/C++传递对象到Java,此篇主要讲解C/C++传递Student对象到Java; 1. 定义com.niubashaoye.simple.jni.StuInfo类 public ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( JNI 传递 Bitmap | 获取位图信息 | 获取图像数据 | 图像数据过滤 | 释放资源 )
文章目录 一.Bitmap 图像数据处理 二.Java 层 Bitmap 对象转为 JNI 层 bitmap 对象 三.获取 bitmap 中的图像数据 四.过滤 bitmap 中的图像数据 ( 获取 ...
- jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...
- 通过BigExcelWriter导出包含数据和图片的excel表,涉及到sheet.createDrawingPatriarch()画图对象,涉及到url转二进制数据
通过BigExcelWriter导出包含数据和图片的excel表,涉及到sheet.createDrawingPatriarch()画图对象,涉及到url转二进制数据 文章目录 通过BigExcelW ...
最新文章
- 这老哥把GPU当暖气用,省钱了!
- 转:Android之 MTP框架和流程分析
- 昆兰士科技大学计算机排名,昆士兰科技大学QS排名第几?2019年综合揭晓
- c语言程序 实现简单计算器功能,C语言实现简单计算器小项目
- 20165230 2017-2018-2 《Java程序设计》第9周学习总结
- 双重检查锁模式导致空指针
- mysql innodb引擎--范围查询优化
- O036、Snapshot Instance 操作详解
- 用于图片切割,图片压缩,缩略图的生成(转到一个好东西)
- 使用java语言操作,如何来实现MySQL中Blob字段的存取
- 会议室分配时间最长_突破大设计1:时间分配
- 家居照明行业网络营销怎么搞?
- 支持Android 11安卓Flash播放器终极版源码方案2022(1:概叙)
- 批量插入测试数据的存储过程
- Java ThreadLocalRandom 伪随机数生成器的源码深度解析与应用
- 2.Collection、Iterator迭代器、泛型、斗地主案例
- 实时视频直播平台的技术要点详解
- Java大作业之餐厅管理系统
- 【本人秃顶程序员】高级 Java 必须突破的 10 个知识点!
- 微信朋友圈点赞设计测试用例
热门文章
- Jenkins 与 Kubernetes 的 CI 与 CD Git + Maven + Docker+Kubectl
- ElementUI+Java实现搜索提示列表
- ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志
- 字符串匹配之KMP---全力解析
- birt什么意思中文翻译_ECTN是什么意思
- 自加一运算_C语言i++、++i混合运算老手未必全掌握,看了你就明白了
- 多表关联查询_【函数007】 EXCEL多表关联查询实战
- html能插入背景的行级元素,Html元素类型:块级元素、行内元素(内联元素)和行内块级元素...
- 积米浏览器如何清除浏览数据
- vue使用class添加动态类