开发环境
Android studio2.3.1
NDK: android-ndk-r12b
创建c++工程
使用Android studio2.3.1直接创建c++工程,省去自己手动一步步的去配置jni,方便很多。如图:
新建自己的C文件
在main-cpp目录下新建自己的SerialPort.c文件;相对应的将app-CMakeLists.txt修改
我这里是把创建项目时,默认的c++文件删除了,如果你没删除,需要在之前的路径后面加上自己的路径src/main/cpp/serialPort.c
还有两个serialportlib是我们自己命名的库文件名称。如果你有多个库换行添加即可
串口的c文件中的方法
java基本需要JNI层提供1.一个打开串口方法,返回一个文件描述符FileDescriptor;2.一个关闭串口 两方法就可以实现与串口进行数据 的交互。下面贴出我的serialPort.c代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <jni.h>
#include <android/log.h>
#include <string.h>
static const char *TAG="serial_port";
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO, TAG, fmt, ##args)
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)
static speed_t getBaudrate(jint baudrate)
{
switch(baudrate) {
case 0: return B0;
case 50: return B50;
case 75: return B75;
case 110: return B110;
case 134: return B134;
case 150: return B150;
case 200: return B200;
case 300: return B300;
case 600: