android JAVA JNI C++新手入门,遇到的问题总结

58 篇文章 0 订阅

最近开始熟悉android的开发,毕业实习的时候曾经接触过android的apk开发,一开始从整个框架的熟悉到具体某个模块的设计与实现,整个体会就是android系统是一个庞大的,互相交融的系统。虽单个模块的设计与模块化思想很优秀,但是还是设计到不用模块的互相交差。所以没法单纯的吃透某一个模块。

任务:

将平台提供的camera接口,实现apk层的调用,也就是说要实现framework层的部分逻辑,JNI的实现以及java层的接口的封装,基于原生camera的C/S架构,平台已经提供了类似此C/S模式的client端的接口,所以只需要实现多个client端并发的对server端的图像数据获取即可,当然还需要做一些预览,此处又设计到了surface的相关知识。

还是模仿了原生camera client端的设计,遇到的问题有如下,仅此记录:

JNI方法在注册的时候:

{ "initCamera",  "()V", (void*)(Java_com_chinatsp_qcomcam_QcomCameraView_initCamera)},

initCamera一定要和java类中的native函数保持一样,一开始自己以为只是别名而已

如果在JNI层的其它自定义的函数,比如第三方回调的函数,在获取ENV的时候需要使用这样的方式:

jint res = g_vm->AttachCurrentThread(&env, NULL);  //g_vm 可以在JNI_OnLoad()时保存全局对象

需要把JNI的env attach到当前的线程环境里面,此时的线程应该是第三方的线程,而非JNI的运行线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值