android 4步操作为app添加串口功能


之前开发过的android程序想添加串口功能,找了些资料,更新程序后把把NDK功能也添加了进来,简单的一个程序变了杂乱许多,所以简记一下串口功能。

git android串口通讯url:https://github.com/cepr/android-serialport-api,开源项目已十年未更新。
环境:mac os
开发环境:android studio 4.1

CMake:Android Studio 编译原生库的默认构建工具,可与 Gradle 搭配使用来构建原生库。
使用CMake为项目添加串口通讯功能只需四步,其实四步就足够:


1:创建jni文件夹:(文件在app目录下创建,右键->new->folder->jni)
加入SerialPort.c,和SerialPort.h文件,
文件url:https://github.com/cepr/android-serialport-api/tree/master/android-serialport-api/project/jni


2:创建java:package:android_serialport_api,加入SerialPort.java,SerialPortFinder.java文件,文件url:https://github.com/cepr/android-serialport-api/tree/master/android-serialport-api/project/src/android_serialport_api


3:创建cmakefile文件

cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library.
             serial_port

             # Sets the library as a shared library.
             SHARED

             # 此处路径需与本地路径相同
             src/main/jni/SerialPort.c )
find_library( # Sets the name of the path variable.
              log-lib

              # Specifies the name of the NDK library that
              # you want CMake to locate.
              log )
target_link_libraries( # Specifies the target library.
                       serial_port

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

4:修改项目build.gradle文件,为项目加入c编译功能:添加两项属性,
1:defaultConfig下
        

        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }


2:defaultConfig同层次
    

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }        


    
添加完成会有个gradle:configure project的过程。    
    
============================
测试方法如下:
    

//初始化串口
    private void initComPort() {
        Log.e("TAG", "-------初始化串口");
        mCom = new SerialControl();
//设置读取串口,每个设备不同。
        mCom.setPort("/dev/ttyS4");
        mCom.setBaudRate("115200");
    }

    //开启串口
    private void openComPort() {
        try {
            mCom.open();
            Log.e("TAG", "-------开启串口");
        } catch (SecurityException e) {
            Log.i(TAG, "打开串口失败:没有串口读/写权限!");
        } catch (IOException e) {
            Log.i(TAG, "打开串口失败:未知错误!");
        } catch (InvalidParameterException e) {
            Log.i(TAG, "打开串口失败:参数错误!");
        }
    }

    //关闭串口
    private void closeComPort() {
        Log.e("TAG", "------------关闭串口");
        if (mCom != null) {
            mCom.stopSend();
            mCom.close();
        }
    }


    private class SerialControl extends SerialHelper {
        public SerialControl() {
        }

        //接收数据处理
        @Override
        protected void onDataReceived(final String receiveData) {
            Log.e("SerialInfo",receiveData);
        }
    }


    private void sendSerialMessage(String sendData) {

        mCom.send(ByteUtils.hexStr2Byte(sendData));


    }    

单纯使用会是比较简单的。其实是底层c编译和串口交互,拿到串口的输出输入流对象,然后对串口进行收发控制。注:8.0以上在AndroidManifest.xml里加上 android:process=“system” android:sharedUserId=“android.uid.system” 

 

源码下载

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要开发安卓串口通信应用程序,您需要遵循以下骤: 1. 确定串口参数:波特率、数据位、停止位和奇偶校验位。 2. 在 AndroidManifest.xml 文件中添加串口权限: ``` <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.WRITE_CALL_LOG" /> <uses-permission android:name="android.permission.ADD_VOICEMAIL" /> <uses-permission android:name="android.permission.USE_SIP" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_CALENDAR" /> <uses-permission android:name="android.permission.WRITE_CALENDAR" /> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.RECORD_VIDEO" /> <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> ``` 3. 在项目中添加一个串口,例如 jSerialComm 。 4. 设计用户界面,包括连接、发送和接收数据的按钮和文本框。 5. 编写串口通信代码,包括打开串口、发送数据、接收数据和关闭串口等。 6. 测试应用程序,确保它可以正确地连接到串口设备并与其通信。 在 Android 上开发串口通信应用程序需要一些编程和硬件知识,如果您是初学者,可能需要一些时间来学习。好的教程和文档可以帮助您快速入门。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值