首先你的andoridstudio 需要配置ndk 环境 

然后在去下载谷歌的的demo 

下载地址

把这些直接复制到代码中

一般  jni C语言调用java 是指定包名调用的 所有android_serialport_api的包名不要改变 

直接复制过去就行

对了 jniLibs 需要指向下,如果不想指向可以把里面的内容复制到 libs里面

我写的指向

    sourceSets {        main {            jni.srcDirs = []            jniLibs.srcDirs = ['src/main/jniLibs']        }    }

准备好之后就可以开始写了,,为了更好的了解串口我拍了一张我们机器上的图片如下

 这个名字不要弄错了

完整的demo如下

package com.hly.main;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.Toast;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import android_serialport_api.SerialPort;public class Good extends AppCompatActivity {    protected SerialPort mSerialPort;    protected InputStream mInputStream;    protected OutputStream mOutputStream;    private ReadThread mReadThread;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.text_layout);                try {                    //临时卡                    mSerialPort = new SerialPort(new File("/dev/ttyS4"), 19200, 0);                    mInputStream = mSerialPort.getInputStream();                    mOutputStream = mSerialPort.getOutputStream();                    mReadThread = new ReadThread();                    Toast.makeText(Good.this, "串口已经打开", Toast.LENGTH_SHORT).show();                    mReadThread.start();                } catch (SecurityException e) {                    e.printStackTrace();                } catch (IOException e) {                    Log.v("test", "启动失败");                    e.printStackTrace();                }    } private class MReadThread extends Thread {        @Override        public void run() {            super.run();            while (!isInterrupted()) {                try {                    if (mInputStream == null)                        return;                    byte[] buffer = new byte[64];                    int mcount;                    if (mInputStream.available() <= 0) {                        continue;                    } else {                        Thread.sleep(300);                    }                    mcount = mInputStream.read(buffer);                    if (mcount > 8) {                      //根据自己的情况添加                        onDataReceived(buffer, mcount, 1);//根据自己需要的情况添加内容                    }                } catch (IOException e) {                    e.printStackTrace();                    return;                } catch (InterruptedException e) {                    e.printStackTrace();                    return;                }            }        }    }          protected void onDataReceived(final byte[] buffer, final int size) {        runOnUiThread(new Runnable() {            public void run() {                    String msg = new String(buffer);                    Toast.makeText(Good.this, msg, Toast.LENGTH_SHORT).show();                    //这个是需要截取的卡号//                    byte[] bytes = buffer;//                    String mealCardData = HexUtils.bytes2Hex(bytes);//                    //截取餐卡卡号,临时餐卡为AA55打头//                    if (mealCardData != null && mealCardData.length() >= 14) {//                        String cardNo = mealCardData.substring(10, 12);//                        cardNo = cardNo + mealCardData.substring(8, 10);//                        cardNo = cardNo + mealCardData.substring(6, 8);//                        cardNo = cardNo + mealCardData.substring(4, 6);//                        Toast.makeText(Good.this, cardNo, Toast.LENGTH_SHORT).show();                }                        });    }}

需要注意的地方就是 地址与波特率 不要弄错了

这样就拿到卡号了,如果项目需要截取卡号之类的,自己在处理就行了 。。。

如果有不懂的可以提问,谢谢。。。。

 

更多相关文章

  1. Android(安卓)Studio编译出来的APK无法安装如何解决?
  2. android ListView添加checkbox注意事项
  3. android 驱动(6)---DTS 分析
  4. android studio适配器Adapter
  5. Android获取串口路径
  6. Android当前版本使用分布情况
  7. Edittext 取消长按 复制和粘糊等操作
  8. android实时监听网络状态并在断网的情况下打开网络设置
  9. Fragment 中的onConfigurationChanged 在切换语言的情况下不被回

随机推荐

  1. Android(安卓)安卓WebView套壳H5网页 手
  2. Android(安卓)studio 权限问题
  3. RecyclerView 中 item 点击事件的优化
  4. android:3D垂直翻转动画-FlipAnimation
  5. *Android(安卓)多线程下载 仿下载助手(改
  6. Android之Service组件
  7. Android设置Dialog透明度、黑暗度方法
  8. android常用系统服务
  9. Android(安卓)中获取res资源
  10. Android实现Tab布局的4种方式(Fragment+Ta