基于Andriod Studio 2.3.1的JNI开发笔记

基于Andriod Studio 2.3.1的JNI开发笔记

前言

最近因项目需要,开发安卓音箱,可是有AudioTrack做网络播放的时候,延迟比较大。改用本地录制再直接播放,依然如此,后来利用AudioRecord,然后发送给STM32做成的音箱,却听不出延迟,查了资料才知道由于安卓系统的调度,AudioTrack播放的时候是有些延迟,问了以前做APP开发的同事,既然都不知道会有这些现象。
经过查阅,才知道安卓可以跳过框架直接操作底层硬件接口。即是JNI。经过几天的自学,了解JNI的用途,和如何使用JNI。首先是在电脑上实现Java和C/C++之间程序互调,然后在到AS上做了基本的demo。本文便于本人以后在AS上做JNI开发而做的笔记。(时间:2019/12/9)
由于本来自己是做单片机开发的,对于安卓开发是初学。所以在AS在做链接库以及如何进行连接上花了一些时间。于是有多做了几遍相同的练习加深印象。

AS的JNI开发流程

1、创建项目
在这里插入图片描述
这里直接一直next到完成就行,有的说要把Include C++ Support,但即使没选上好像也是可以,具体有什么作用以后如果接触到在回来补充吧。(时间:2019/12/9)
2、设置项目配置
local.properties 中添加ndk路径,如本人的NDK路径为ndk.dir=D:\Android\sdk\ndk-bundle。结果如下图:在这里插入图片描述
在gradle.propertiest中设置对低版本NDK支持,android.useDeprecatedNdk=true;结果如图:
在这里插入图片描述
3、写java代码,
创建JNI的Java类,然后创建native方法;如图在这里插入图片描述
然后make project得到class。
创建jni文件夹,然后利用Terminal在jni目录下生成.h头文件,然后编写编写接口函数的C文件
进入到jni路径下生成.H文件
接下来,在jni目录下,新建并编写C代码,如图:
在这里插入图片描述
接着在jni文件夹下新建Android.mk和Application.mk文件。
Android.mk文件
Application.mk
然后在Terminal中调用ndk-build实现库的生成。结果如图:
在这里插入图片描述
4、库的调用和使用
在src中的buil.gradle中添加调用语句
调用生成的库
然后rebuilde project。然后添加调用代码如下
主类
JNI类中的代码
最后一步就是运行,根据实际机器或者模拟器情况,设置并运行程序,结果如下
调试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值