kotlin和ndk
文章平均质量分 70
kotlin 和 ndk的相关操作
安卓兼职framework应用工程师
这个作者很懒,什么都没留下…
展开
-
Android JNI异常处理
Android JNI 调用时的异常主要有如下两种:Native 代码调用 Java 层代码时发生了异常要处理Native 代码自己抛出了一个异常让 Java 层去处理可以看到异常的发生和处理基本都需要 Native 和 Java 交互,而对于 Native 自身出了异常,也就是 C/C++ 代码有问题,导致应用崩溃的又是另一回事了。Native 调用 Java 方法时的异常之前的博客中就讲述了如何从 Native 调用 Java 的方法,先准备一个有异常的方法供 Native 去调用。原创 2020-07-16 20:14:20 · 658 阅读 · 0 评论 -
Android JNI常用api
一、Interface Function Table(接口函数表)每个函数都可以通过JNIEnv参数访问,JNIEnv类型是指向一个存放所有JNI接口指针的指针,其定义如下:typedef const struct JNINativeInterface *JNIEnv;虚拟机初始化函数表,如下面代码所示,前三个条目是为了将来和COM兼容而保留的。另外,我们在函数表的开头附近保留了一些额外的NULL条目,例如,可以在FindClass之后添加未来与类相关的JNI操作,而不是在表的末尾。请注意,函数表可以原创 2020-07-14 09:18:36 · 415 阅读 · 0 评论 -
Android JNI 数据类型
Java层和Native层都有自己的数据类型,在JNI中,这些数据类型又可以分为基本数据类型和引用数据类型,其中,基本数据类型是可以直接相互转换的,而引用数据类型则需要进行一定的装换才可以。为了方便对两个世界的基本数据类型进行相互装换,JNI为我们提供了一系列的方法来帮助我们完成这些工作。JNI数据类型1 基本数据类型Java类型 JNI类型 类型签名boolean jboolean Zbyte jbyte Bchar jchar Cshor原创 2020-07-13 20:27:38 · 800 阅读 · 0 评论 -
Android JNI结构体和指针数组的使用以及调用Java类的方法和属性
1.结构体的使用struct Work{ char name[10]; int age;}darren = {"Darren",23},jack;//默认给结构体赋值struct Worker{ char name[10]; int age; struct Work work;};extern "C" JNIEXPORT void JNICALLJava_com_xinrui_ndkapp_MainActivity_usestruct(JNIEnv *en原创 2020-07-13 15:48:49 · 459 阅读 · 0 评论 -
Android JNI读取本地文件和读取文件并且写入其他文件
JNI 对文件读写操作:1.读取本地文件extern "C" JNIEXPORT void JNICALLJava_com_xinrui_ndkapp_MainActivity_readFile(JNIEnv *env, jobject instance,jstring str) { const char* path=env->GetStringUTFChars(str,JNI_FALSE); FILE* file = fopen(path,"r"); if(file==原创 2020-07-13 09:51:53 · 4670 阅读 · 0 评论 -
Android JNI创建字符串数组和jni释放资源
1.创建字符串数组extern "C" JNIEXPORT jobjectArray JNICALLJava_com_xinrui_ndkapp_MainActivity_createStringArray(JNIEnv *env, jobject instance){ jclass cls = env->FindClass("java/lang/String"); jobjectArray str_array = env->NewObjectArray(5,cls,0);原创 2020-07-10 18:18:26 · 1253 阅读 · 0 评论 -
Android JNI文件操作常用函数
在Android开发中,对于JNI读写文件也是常用的功能,jni操作常用函数讲解就来简单分析方便更快了解jni读写文件功能。原创 2020-07-10 16:21:51 · 1877 阅读 · 0 评论 -
Android JNI 删除文件和遍历文件夹并删除文件夹下的文件
对操作文件也是在开发中常用的事情,下面对删除文件和文件夹下的文件做个笔记1.删除文件extern "C" JNIEXPORT int JNICALLJava_com_xinrui_ndkapp_MainActivity_deletefile(JNIEnv *env, jobject instance, jstring str) { const char *str_path = env->GetStringUTFChars(str, JNI_FALSE);//本地代码绝不能修改字符串的内容原创 2020-07-10 15:24:43 · 932 阅读 · 0 评论 -
Android JNI string.h 常用函数详解
JNI 开发中 string.h的一些常用函数做个总结:strcpychar *strcpy(char *destin, char *source);功能:将source指向的字符串拷到destin。int main() { char dest[5]; char *src="123456"; strcpy(dest, src); printf("dest= %s, %s, %s", dest, dest+4, dest+5); return 0; }原创 2020-07-10 14:03:31 · 796 阅读 · 0 评论 -
Android JNI用bitmap来实现Imageview的上下翻转和左右镜像
Android NDK功能很强大,今天就来学习下jni用bitmap实现Imageview的上下翻转和左右镜像效果图:在 Android 通过 JNI 去调用 Bitmap,通过 CMake 去编 so 动态链接库的话,需要添加 jnigraphics 图像库。target_link_libraries( # Specifies the target library. native-operation jni原创 2020-07-01 09:28:55 · 1032 阅读 · 0 评论 -
Android Jni用bitmap形式实现Image图片的黑白滤镜
在Android的开发中,我们有时会对性能要求比较高。Android通过NDK为我们提供了c++开发的方式。我们可以通过c++完成核心的耗时的计算然后通过JNI的方式将处理完成的数据传给Java层。今天,我们就用jni的方式对Bitmap进行处理,来实践NDK开发的方式。开发一个图片滤镜。效果图:1.CMakeLists.txt 配置target_link_libraries( # Specifies the target library. nativ原创 2020-07-01 09:13:15 · 533 阅读 · 0 评论 -
Android jni线程同步和互斥(生产者和消费者模式)
前言在jni开发中,对于线程同步和互斥也是经常用到的,下面就这两种模式进行讲解下1.线程同步第一个线程全部输出完成后,第二个线程再去打印.int pthread_mutex_init 是一条指令,是中断指令的标识。该函数用于C函数的多线程编程中,互斥锁的初始化。(类似 synchronized 作用)int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);原创 2020-06-30 17:23:57 · 705 阅读 · 0 评论 -
Android NDK使用sqlite3.h 查询sdcard和硬盘的数据库
前言在盒子开发中,用sqlite查询大量数据的话会很慢,所以借助NDK用sqlite3.h来查询db数据库就非常的快捷,下面就具体操作分享下 做个笔记1.native-lib.cpp#include <jni.h>#include <string>#include "AndroidLog.h"#include "sqlite3.h"#define CLASSNAME_VISION_DET_RET "com/imi/myapplication/MainActivity"原创 2020-06-29 17:09:45 · 556 阅读 · 1 评论 -
Android NDK jni调用java类的方法
前言在NDK开发中,jni和java方法互调也是常用的,下面做个笔记记录下1.实例化java类,然后对方法赋值JNIEXPORT jobject JNICALL Java_com_darren_ndk_day13_Simple1_createPoint(JNIEnv *env, jclass jclz){ // jclz -> Simple1 // 获取 Point 的 class ,name = "全类名" jclass point_clz = (*env)->FindClass原创 2020-06-29 09:09:53 · 424 阅读 · 0 评论 -
Android NDK 字符串的查找拼接截取替换转换等相关操作
前言在NDK开发中,对字符串的操作也是常用的,下面对字符串的操作做个笔记#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>// 字符串定义void main(){ // 第一种 字符串数组 char str[] = {'D','a','r','r','e','n','\0'}; str[2] = 'y'; printf("%s\n",s原创 2020-06-29 08:56:56 · 868 阅读 · 0 评论 -
Android JNI学习-线程相关操作
前言在jni中,对线程的操作也是非常常用的,下面针对线程的操作,做个笔记1.导入头文件#include <pthread.h>创建线程线程创建函数:int pthread_create( pthread_t* thread, pthread_attr_t const* attr, void* (*start_routine)(void*), void* arg);thread:指向 pthread_t 类型变量的指针,用它代表返回线程的句柄原创 2020-06-28 20:13:19 · 263 阅读 · 0 评论 -
Android 多级指针和数组指针的相关操作
前言在做NDK开发过程中,会对指针进行些常用的操作,下面记录下相关操作,做个笔记#include <stdio.h>/*// 二级指针和多级指针void main(){ int num = 12; // int* 指针 & 取地址 int* p = # int** s_p = &p;// 对一级指针取地址 // int*** s_s_p = &s_p; // 多级指针 printf("p 的值是:%p,s_p 的值是:%p"原创 2020-06-28 20:28:20 · 254 阅读 · 0 评论 -
kotlin 协程的简单使用
kotlin协程用于线程切换,kotlin里面不需要new Thread,并且,协程的开销小于new Thread。有三种写法:runBlocking,launch,async既然协程的出现可以取代Thread,我们这里想要验证的是:会不会阻塞主线程?协程里面的代码是怎么执行的?按顺序执行还是并行?协程里面能不能更新页面?依赖协程需要额外依赖一个库协程用于android的库,它会自动...原创 2020-03-09 16:15:35 · 405 阅读 · 0 评论 -
Kotlin中,InputStream的全部内容读取为String
在kotlin开发中,怎么样将inputStream输入流的内容读取为String,下面介绍几种方法:1.val reader = BufferedReader(InputStreamReader(input))try { val results = StringBuilder() while (true) { val line = reader.readL...原创 2020-03-09 14:30:11 · 3433 阅读 · 0 评论 -
Kotlin 类、对象和接口
Kotlin 类、对象和接口Kotlin 的类和接口在概念上跟 Java 是一样的,但是用法存在一些差别,比如继承的写法、构造函数和可见性修饰符的不同等,此外还有一些 Java 中没有的概念,如数据类、密封类、委托和 object 关键字等。下面从类和接口的定义开始,感受一下 Kotlin 的非凡之处吧!类和接口的定义类与继承和 open、final 以及 abstract 关键字跟 ...原创 2020-03-07 13:42:50 · 296 阅读 · 0 评论 -
android Kotlin int类型和Long类型转换
在Kotlin开发中,即使Long类型较大,int类型的数值也不会自动转换为long类型。这与Java处理数字转换的方式不同。例如;在Java中int number1 = 102;long number2 = number1; //有效代码这里,number1类型的 int 值自动转换为类型long,并分配给变量number2。在Kotlin,val number1:Int =10...原创 2020-03-06 19:12:33 · 5819 阅读 · 0 评论 -
Android Kotlin的5种单例模式
最近在学习Kotlin,在项目开发中,运用到了单例模式。而它表达方式与Java是不同的。所以对不同单例模式的实现进行了分别探讨。主要单例模式实现如下:饿汉式懒汉式线程安全的懒汉式双重校验锁式静态内部类式一、饿汉式实现//Java实现public class SingletonDemo { private static SingletonDemo instance=new S...原创 2020-03-04 13:39:25 · 1715 阅读 · 0 评论 -
android Kotlin基础-运算符
一、算术运算符一元运算符二元运算符算术赋值运算符二、关系运算符三、逻辑运算符四、位运算符五、其他运算符六、运算符优先级原创 2020-01-10 14:15:12 · 877 阅读 · 0 评论 -
Kotlin 异常错误处理和类型检查
1、异常错误处理/**对可能发生执行异常的代码的一种保护默认异常类:Exception*/fun main(args: Array<String>) { println("--------------直接展示错误--------------") //直接展示错误 try{ "abc".toInt() }catch (e...原创 2019-12-30 19:16:20 · 824 阅读 · 1 评论 -
Kotlin 高阶函数
高阶函数的基本概念传入或者返回函数的函数函数引用 ::println带有Receiver的引用 pdfPrinter::printlnfun main(args: Array<String>) { val country = arrayOf("Britain", "France", "China", "Japan", "American", "Germany") ...原创 2019-12-30 17:50:53 · 211 阅读 · 0 评论 -
Kotlin 程序结构
常量val = value,值类型类似Java的final不可能重复赋值运行时常量:val x =getX()编译期常量:const val x = 2变量val = variablevar x = “HelloWorld”//定义变量x = “Hello,China”//再次赋值类型推导编译器可以推导量的类型val string =“Hello” //...原创 2019-12-30 17:47:05 · 233 阅读 · 0 评论 -
Kotlin 接口、泛型与扩展详解
1.接口/** * 接口 interface : 方法、属性或一段功能的"蓝本" * 仅仅是规定实现的标准(抽象的) * * 通常用于对类进行附加功能,可以用类保持简洁的定义 * 通过实现1个或N个接口的组合,来实现非继承式的功能增强 *///接口定义: interface 接口名 {//各种属性或方法定义 }interface Livable { val hasSk...原创 2019-12-26 13:56:13 · 573 阅读 · 0 评论 -
android kotlin基础语法
if语句/表达式Kotlin简化了Java中的一些语句,将其变为具有返回值的表达式,主要有if表达式、when表达式、try表达式、表达式函数体,示例代码如下:fun main(args: Array<String>) { var a = 1 var b = 2 //if表达式,可以自动推断出max的类型是Int,不需要显式声明 val max = ...原创 2019-12-16 13:36:57 · 590 阅读 · 0 评论 -
android kotlin基础-- 变量 函数 数据类型
android kotlin 基础学习 没学习一门新的语言都是从 Helloword 开始一、Hello World按照国际惯例,学习一门新的语言通常都是从“Hello World”开始的,在这里也不例外,先看下 Java 中的 main 方法如何用 Kotlin 来表示fun main(args: Array<String>) { println("Hello Worl...原创 2019-11-23 13:59:06 · 359 阅读 · 0 评论 -
Android之Kotlin入门:常量和静态方法
本系列旨在从android原生开发快速转移到kotlin开发,文章着重快速高效转移kotlin技巧,可能不太系统,但可以做到看得懂、用得会,偏向于实战。常量Java中:class StaticDemoActivity {public static final String LOAN_TYPE = “loanType”;public static final String LOAN_TI...原创 2019-11-22 09:21:41 · 574 阅读 · 0 评论 -
android 快速入门kotlin
android studio 创建Activity新建时,最下面的Source Language选择Kotlin.创建activity创建完成后,AndroidStudio会自动帮我们生成以Kotlin方式创建的Activity。package com.example.ado.myapplicationimport android.os.Bundleimport android.su...原创 2019-11-22 09:15:00 · 174 阅读 · 0 评论 -
kotlin 实现点击输入框弹出软键盘、点击其他区域收起软键盘
当输入框输入完以后 实现点击其他区域收起软键盘代码如下:override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {if (ev!!.getAction() === MotionEvent.ACTION_DOWN) {val v = currentFocusif (isShouldHideInput(v, ev!!)) {//点...原创 2019-11-19 14:02:14 · 2265 阅读 · 0 评论 -
kotlin 实现viewpager图片切换
通过kotlin 来实现viewpager案例,代码部分如下1.class ViewPagersActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layou...原创 2019-11-16 11:09:16 · 969 阅读 · 0 评论 -
kotlin 给recycleview添加头部和尾部
1.创建adapterclass RecyclerViewAddHeaderAndFooterAdapter(var context: Context, var items: ArrayList):RecyclerView.Adapter<RecyclerViewAddHeaderAndFooterAdapter.ViewHolder>(){companion object{va...原创 2019-11-14 16:17:20 · 958 阅读 · 0 评论 -
Android kotlin使用RecyclerView自定义adapter实例和点击事件
1.创建adapterclass RecyclerViewAdapter(val items: List ,var context:Context) : RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {override fun onCreateViewHolder(parent: ViewGroup, viewType...原创 2019-11-14 11:26:35 · 2618 阅读 · 0 评论 -
kotlin android 自定义adpter适配器
关于学习用kotlin 编写android adpter适配器的经历 直接上代码 同时也给后来人提供学习参考class AppListAdapter(val items: List ,var context:Context): BaseAdapter() { override fun getView(position: Int, convertView: View?, parent: V...原创 2019-11-14 09:45:50 · 602 阅读 · 0 评论