Android使用串口(基于android-serialport-api)

转载,原文出处:http://blog.csdn.net/itdo_just https://blog.csdn.net/itdo_just/article/details/80514116

运行平台: 
CPU:全志V40 
Android版本:6.0.1

关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下: 
https://github.com/cepr/android-serialport-api

官方给出的代码是eclipse工程,SDK的版本也比较旧。我使用的Android Studio,如果直接使用google提供的so库文件是访问不了串口的,我平台需要使用的SDK版本是26,而github上这个开源的代码比较旧了,跟我SDK版本也不匹配,好在google有提供相应的JNI文件,从github上下载这个工程下来后,在android-serialport-api文件夹里面可以找到jni文件夹,里面包含有SerialPort.c,如下: 

有了这个文件后需要使用CMAKE去编译它,至于怎么安装和使用CMAKE我找到一篇文章: 
https://blog.csdn.net/qq_25817651/article/details/53135685 
基本上只要看下怎么安装CMAKE就好了,下面我会继续讲下怎么使用。CMAKE安装好后下面先建立一个JNI工程,这个工程只是为了去获取CMakeLists.txt这个编译文件,先创建好工程,如下: 

 

 

 

这里直接Next就可以了,在工程下面可以看到有个CMakeLists.txt的文件,直接把这个CMakeLists.txt复制出来到工程目录下的app文件夹就可以关闭工程了,如果不添加这个文件,后面自己工程编译jni文件的时候会提示找打不到这个CMake文件 

复制出来上面那个文件后,回到自己需要添加串口的工程,把这个文件复制到”项目名/app/”下,之后创建jni目录: 

 

并复制 android-serialport-api-master\android-serialport-api\project\jni 下的“SerialPort.c”文件到自己创建的jni目录下,注意在android studio中显示的是“cpp”目录。 

在build.gradle(Module:app)里面添加如下内容,SDK版本根据自己需要进行修改: 

上面的步奏添加完后,进行同步后就会在工程页面出现我们前面添加的CMakeLists.txt,打开 CMakeLists.txt 做如下修改: 

然后编译,在下面这个目录下会生成对应的串口so文件: 

这个文件夹的名字必须为“android_serialport_api”,把这个文件夹复制到自己的工程下面 

加载库文件修改为新生成的so文件 

接下来就可以直接在工程里面使用串口了,代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //series
        try {
            /* 打开串口 */
            mSerialPort = new SerialPort(new File("/dev/" + "ttyS2"), 115200, 0);
            //  mOutputStream = (FileOutputStream) mSerialPort.getOutputStream();
            mInputStream = (FileInputStream) mSerialPort.getInputStream();

            /* Create a receiving thread */
            mWriteThread = new WriteThread();/* 创建串口处理线程 */
            mWriteThread.start();

        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

你可能感兴趣的:(Android使用串口(基于android-serialport-api))