Android NDK学习笔记2:数组
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119152933
本文出自【赵彦军的博客】
文章目录
- java数组和jni数组对应关系
- jobjectArray 实战
- 获取数组长度
- 获取数组第一个元素
- jintArray 实战
- 获取第一个元素
java数组和jni数组对应关系
kotlin | jni |
---|---|
IntArray | jintArray |
DoubleArray | jdoubleArray |
LongArray | jlongArray |
CharArray | jcharArray |
ShortArray | jshortArray |
Array | jobjectArray |
//kotlinexternal fun arrayInt(array: IntArray): Stringexternal fun arrayDouble(array: DoubleArray): Stringexternal fun arrayLong(array: LongArray): Stringexternal fun arrayChar(array: CharArray): Stringexternal fun arrayShort(array: ShortArray): Stringexternal fun arrayString(array: Array<String>): String
//jni
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayInt(JNIEnv *env, jobject thiz, jintArray array) {// TODO: implement arrayInt()
}extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayDouble(JNIEnv *env, jobject thiz,jdoubleArray array) {// TODO: implement arrayDouble()
}extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayLong(JNIEnv *env, jobject thiz, jlongArray array) {// TODO: implement arrayLong()
}extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayChar(JNIEnv *env, jobject thiz, jcharArray array) {// TODO: implement arrayChar()
}extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayShort(JNIEnv *env, jobject thiz,jshortArray array) {// TODO: implement arrayShort()
}extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayString(JNIEnv *env, jobject thiz,jobjectArray array) {// TODO: implement arrayString()
}
jobjectArray 实战
获取数组长度
class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = arrayOf("first", "two")binding.sampleText.text = "长度为:" + arrayLength(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayLength(array: Array<String>): Intcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}}
}
native-lib.cpp
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_myapplication_MainActivity_arrayLength(JNIEnv *env, jobject thiz,jobjectArray array) {//获取数组长度int length = env->GetArrayLength(array);return length;
}
获取数组第一个元素
lass MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = arrayOf("first", "two")binding.sampleText.text = "第一个元素:" + arrayFirst(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayFirst(array: Array<String>): Stringcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}}
}
native-lib.cpp
extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_arrayFirst(JNIEnv *env, jobject thiz,jobjectArray array) {//获取array第一个元素jobject first = env->GetObjectArrayElement(array, 0);//把jobject强转成jstringreturn static_cast<jstring>(first);
}
jintArray 实战
获取第一个元素
class MainActivity : AppCompatActivity() {private lateinit var binding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = ActivityMainBinding.inflate(layoutInflater)setContentView(binding.root)val array = intArrayOf(1, 2, 3)binding.sampleText.text = "第一个元素:" + arrayInt(array)}/*** A native method that is implemented by the 'native-lib' native library,* which is packaged with this application.*/external fun arrayInt(array: IntArray): Intcompanion object {// Used to load the 'native-lib' library on application startup.init {System.loadLibrary("native-lib")}}
}
native-lib.cpp
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_myapplication_MainActivity_arrayInt(JNIEnv *env, jobject thiz, jintArray array) {jint *result = env->GetIntArrayElements(array, JNI_FALSE);//获取第一个元素return result[0];
}
Android NDK学习笔记2:数组相关推荐
- Android NDK学习笔记1:基础
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119005718 本文出自[赵彦军的博客] 文章目录 (一)什么是Android N ...
- Android NDK学习笔记(转)
前言 Android系统中的应用程序都是用Java开发的.Android NDK使我们能够在android上使用C/C++开发的原生代码.有两个理由使用NDK: 一是合理的重用现有的代码:二是在程序中 ...
- Android NDK学习笔记3:JNI访问Java属性、方法
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119209444 本文出自[赵彦军的博客] 文章目录 Java 类型和JNI符号对比 ...
- Android NDK学习笔记6:异常处理
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119547007 本文出自[赵彦军的博客] 文章目录 JNI捕获异常 JNI抛出异常 ...
- Android NDK学习笔记5:引用类型管理
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119545225 本文出自[赵彦军的博客] 文章目录 局部引用 全局引用 弱引用 总 ...
- Android NDK学习笔记4:JNI访问Java构造函数
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119348263 本文出自[赵彦军的博客] 文章目录 方式一:NewObject 方 ...
- Android 开发学习笔记:七大知识点板块汇总
前言 我从事 Android 开发行业也有些年头,工作期间也接触过很多 Android 开发者, 因此也非常清楚 程序员最大的限制并非年龄而是实力: 但大多数初中级Android工程师,想要提升技能, ...
- NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM(方法签名,CallXXXMethod)
NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM 题目有点复杂,不过确实就是那么回事.这章想记录的内容比较多,先列出来: native static 与 nat ...
- NDK学习笔记:FFmpeg音视频同步3(你追我赶,升级ffmpeg/libyuv支持neon)
NDK学习笔记:FFmpeg音视频同步3 本篇内容说多不多,但如果要说得明明白白的,可能就有点难度了.所以我决定把我的调试过程日志都呈现出来,方便大家理解.继上一篇文末,我们学习到了什么是DTS/PT ...
最新文章
- 转载 - 10个基于jQuery实现的漂亮网站赏析
- openJDK与JDK的区别
- 在Ubuntu 14.04中使SublimeText 3支持中文输入法
- The disk contains an unclean file system\
- mysql专门导入程序_从MySQL导入导出大量数据的程序实现方法
- Oracle 跨库 查询 复制表数据 分布式查询
- android面试详解
- webpack devserver配置_在webpack中使用babel
- asp.net 页面跳转的方法
- STC 32位8051单片机开发实例教程 二 I/O工作模式及其配置
- 假设检验的基本原理和T检验
- Android 应用换肤功能(白天黑夜主题切换)
- c语言创建二叉树从小到大_用C语言编写二叉树的建立与遍历
- 创建Docker镜像
- 模拟电路50(开关电容滤波器)
- php编写古诗,古诗写作方法集锦
- node.js 安装,详细步骤教程
- EasyExcel基础使用教程
- 中小网站如何使用谷歌Adsence国际化优势赚钱?
- CentOS 6.8 安装TigerVNC 实现 Linux 远程桌面并安装火狐浏览器
热门文章
- mac pdf去水印_今天才知道,Word、PDF文档去水印这么简单!一键水印说拜拜
- catia的vh轴怎么显示_Origin入门教程(三):Origin中曲线怎么平移?
- java 今天 昨天_js获取当前时间(昨天、今天、明天)
- php 单元测试 麻烦,php – 正确的单元测试
- 用计算机做科学计算是绝对精确的吗,科学计算与数学建模 - osc_3gfjojb2的个人空间 - OSCHINA - 中文开源技术交流社区...
- 依赖注入底层反射原理_Spring中反射与反射的原理(转载)
- centos7无法使用ifconfig且无法上网
- Transformer变体层出不穷,它们都长什么样?
- 岗位推荐 | 阿里巴巴达摩院招聘自然语言处理、机器翻译算法专家
- 三味Capsule:矩阵Capsule与EM路由