Android Studio 简单串口操作
2016-04-05 17:18
615 查看
最近由于公司的需要,需要对代码的操作 ,因为以前没有接触过串口 ,所以上网查了很多的资料,但是那些资料都是有点太老,因为现在大多是android studio 所以我也用AS开发,但是在开发过程中都没有办法调用到.so文件,经过我一番努力,终于在AS上成功运行,和雷达串口交互。闲话少说,直接上方法。
首先 AS是正式版,我用的是AS-1.51正式版,其他版本我也试过,其中测试版的不行,所以最好用正式版。
1、首先是配置gradle
distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
gradle必须是2.10的版本,其他版本应该不行,所以要注意。
2、配置项目中的build.gradle
dependencies {
classpath ‘com.android.tools.build:gradle-experimental:0.7.0-alpha3’
这个版本就是谷歌用来测试ndk的 这个必须要改的 不然怎么编译都不会通过的
3、接下来要配置module里面的build.gradle
这个改的有点多
apply plugin: ‘com.android.model.application’
model {
android {
compileSdkVersion 23
buildToolsVersion “23.0.3”
}
dependencies {
compile fileTree(include: [‘*.jar’], dir: ‘libs’)
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:23.2.1’
}
红线标注的是要注意的地方
4、ndk的配置 直接上图
在工程中
local.properties中配置ndk,ndk应该没什么要求 我用的是AS自动下载的,下载速度还是很快的,也可以自行下载,在网上搜android-ndk-r10d 这个版本也行 我试过了
ndk.dir=D:\sdk\ndk-bundle
sdk.dir=D:\sdk
5、剩下的就非常简单了,就是复制粘贴了,因为我们要用到,不用修改,直接复制到你的java文件夹下
然后把jni那个文件夹也拷贝到java文件夹下
这时候可以构建一下
构建后直接把3个文件夹
放入lib和obj中覆盖原来的
到现在已经配置完毕
6、代码调用
至此结束 ,我调用的结果
数据的处理可以根据的自己的需要,不知道对你有没有帮助。
相关文件下载
首先 AS是正式版,我用的是AS-1.51正式版,其他版本我也试过,其中测试版的不行,所以最好用正式版。
1、首先是配置gradle
distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
gradle必须是2.10的版本,其他版本应该不行,所以要注意。
2、配置项目中的build.gradle
dependencies {
classpath ‘com.android.tools.build:gradle-experimental:0.7.0-alpha3’
// NOTE: Do not place your application dependencies here; they belo 4000 ng // in the individual module build.gradle files }
这个版本就是谷歌用来测试ndk的 这个必须要改的 不然怎么编译都不会通过的
3、接下来要配置module里面的build.gradle
这个改的有点多
apply plugin: ‘com.android.model.application’
model {
android {
compileSdkVersion 23
buildToolsVersion “23.0.3”
defaultConfig { applicationId "项目的包名" minSdkVersion.apiLevel 15 targetSdkVersion.apiLevel 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles.add(file('proguard-rules.pro')) } } ndk { moduleName "SerialPort" //生成.so的名字 ldLibs.add('log') } }
}
dependencies {
compile fileTree(include: [‘*.jar’], dir: ‘libs’)
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:23.2.1’
}
红线标注的是要注意的地方
4、ndk的配置 直接上图
在工程中
local.properties中配置ndk,ndk应该没什么要求 我用的是AS自动下载的,下载速度还是很快的,也可以自行下载,在网上搜android-ndk-r10d 这个版本也行 我试过了
ndk.dir=D:\sdk\ndk-bundle
sdk.dir=D:\sdk
5、剩下的就非常简单了,就是复制粘贴了,因为我们要用到,不用修改,直接复制到你的java文件夹下
然后把jni那个文件夹也拷贝到java文件夹下
这时候可以构建一下
构建后直接把3个文件夹
放入lib和obj中覆盖原来的
到现在已经配置完毕
6、代码调用
public class RadarActivity extends Activity { private static final int msgKey = 2; private FileInputStream mInputStream; private SerialPort mSerialPort; private ReadThread mThread; private StringBuffer mSb; private boolean flag = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.radar); mSerialPort = new SerialPort(new File("/dev/ttyMT2"), 9600,0); mThread = new ReadThread(); mThread.start(); mInputStream = (FileInputStream)mSerialPort.getInputStream(); } public class ReadThread extends Thread { @Override public void run() { // TODO Auto-generated method stub super.run(); while (!isInterrupted()) { int size; try { byte[] buffer = new byte[4]; Log.d("RadarActivity", "----ReadThread start----"); if (mInputStream == null) { return; } Log.d("RadarActivity", "----read(buffer)----"); size = mInputStream.read(buffer); Log.d("RadarActivity", "----size----" + String.valueOf(size)); if (size > 0) { Log.d("RadarActivity", "----ReadThread size>0----"); mSb = new StringBuffer(); for (int i = 0; i < buffer.length; i++) { mSb.append(buffer[i]); } Log.d("RadarActivity", "shuju=" + mSb.toString()); Message msg = new Message(); msg.what = msgKey; mHandler.sendMessage(msg); } } catch (IOException e) { Log.d("RadarActivity", "----ReadThread printStackTrace----"); e.printStackTrace(); return; } } } } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case msgKey: Log.e("RadarActivity", mSb.toString()); } } break; default: break; } } }; }
至此结束 ,我调用的结果
数据的处理可以根据的自己的需要,不知道对你有没有帮助。
相关文件下载
相关文章推荐
- Android动态加载—so文件
- android Android-PullToRefresh 下拉刷新
- 使用 CountDownTimer 实现验证码倒计时
- android 打砖块小游戏设计(2D绘图)
- [置顶] Android studio 插件之 GsonFormat (自动生成javabean)
- android视图学习---Android中View绘制流程以及invalidate()等相关方法分析
- android 多语言国际化
- Android自定义控件
- Android Studio 设置项目Module编码,解决Android Studio项目运行时乱码问题
- AndroidStudioSDK下各个文件(夹)详解
- Android---悬浮框(PopupWindow)的弹出及屏幕变为半透明
- Android实现点击通知栏后,先启动应用再打开目标Activity
- om.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException
- AndroidStudioSDK下tools下各个文件(夹)的用处
- Android View的 滑动冲突及工作流程
- Android屏幕适配全攻略(最权威的官方适配指导)
- Android中的Surface和SurfaceView之我见
- NFD for Android环境配置
- Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一
- Android_studio安装步骤