android_serialport_api代码分析
1. 导入Android studio
android_serialport_api是一个开源的串口测试工具,代码应该是用eclipse工程(不确定,没用过eclipse,反正不是Android studio的)。把他放入Android studio中,正好熟悉一下Android studio的使用。
1. 查看源码结构
desk@desk-ubuntu:~/android-serialport-api-master$ tree
.
├── AndroidManifest.xml
├── bin
│ ├── AndroidManifest.xml
│ ├── classes
│ │ └── android_serialport_api
│ │ ├── sample
│ │ │ ├── Application.class
│ │ │ ├── BuildConfig.class
│ │ │ ├── ConsoleActivity$.class
│ │ │ ├── ConsoleActivity$.class
│ │ │ ├── ConsoleActivity.class
│ │ │ ├── LoopbackActivity.class
│ │ │ ├── LoopbackActivity$SendingThread$.class
│ │ │ ├── LoopbackActivity$SendingThread.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu$.class
│ │ │ ├── MainMenu.class
│ │ │ ├── R$array.class
│ │ │ ├── R$attr.class
│ │ │ ├── R.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── Sending01010101Activity.class
│ │ │ ├── Sending01010101Activity$SendingThread.class
│ │ │ ├── SerialPortActivity$.class
│ │ │ ├── SerialPortActivity.class
│ │ │ ├── SerialPortActivity$ReadThread.class
│ │ │ ├── SerialPortPreferences$.class
│ │ │ ├── SerialPortPreferences$.class
│ │ │ └── SerialPortPreferences.class
│ │ ├── SerialPort.class
│ │ ├── SerialPortFinder.class
│ │ └── SerialPortFinder$Driver.class
│ ├── classes.dex
│ ├── MainMenu.apk
│ ├── res
│ │ └── crunch
│ │ └── drawable
│ │ └── icon.png
│ └── resources.ap_
├── gen
│ └── android_serialport_api
│ └── sample
│ ├── BuildConfig.java
│ └── R.java
├── jni
│ ├── Android.mk
│ ├── Application.mk
│ ├── gen_SerialPort_h.sh
│ ├── SerialPort.c
│ └── SerialPort.h
├── libs
│ ├── armeabi
│ │ └── libserial_port.so
│ ├── armeabi-v7a
│ │ └── libserial_port.so
│ └── x86
│ └── libserial_port.so
├── project.properties
├── README.md
├── res
│ ├── drawable
│ │ └── icon.png
│ ├── layout
│ │ ├── console.xml
│ │ ├── loopback.xml
│ │ ├── main.xml
│ │ └── sending01010101.xml
│ ├── values
│ │ ├── baudrates.xml
│ │ └── strings.xml
│ └── xml
│ └── serial_port_preferences.xml
├── run_emulator.sh
└── src
└── android_serialport_api
├── sample
│ ├── Application.java
│ ├── ConsoleActivity.java
│ ├── LoopbackActivity.java
│ ├── MainMenu.java
│ ├── Sending01010101Activity.java
│ ├── SerialPortActivity.java
│ └── SerialPortPreferences.java
├── SerialPortFinder.java
└── SerialPort.java
2. 加入Android studio
将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)
3. 分析代码
1. 总体框架
2. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android_serialport_api.sample" //包名
android:versionCode="3"
android:versionName="1.2" > <application //应用
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name="Application" > //第一个进入的activity;名字为MainMenu
<activity
android:label="@string/app_name"
android:name="MainMenu" >
<intent-filter >
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="SerialPortPreferences" >
</activity>
<activity android:name="ConsoleActivity" >
</activity>
<activity android:name="LoopbackActivity" >
</activity>
<activity android:name="Sending01010101Activity"></activity>
</application> <uses-sdk android:minSdkVersion="3" /> </manifest>
3. MainMenu.java
public class MainMenu extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button buttonSetup = (Button)findViewById(R.id.ButtonSetup);
buttonSetup.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainMenu.this, SerialPortPreferences.class));
}
});
final Button buttonConsole = (Button)findViewById(R.id.ButtonConsole);
buttonConsole.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainMenu.this, ConsoleActivity.class));
}
});
final Button buttonLoopback = (Button)findViewById(R.id.ButtonLoopback);
buttonLoopback.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainMenu.this, LoopbackActivity.class));
}
});
final Button button01010101 = (Button)findViewById(R.id.Button01010101);
button01010101.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainMenu.this, Sending01010101Activity.class));
}
});
final Button buttonAbout = (Button)findViewById(R.id.ButtonAbout);
buttonAbout.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainMenu.this);
builder.setTitle("About");
builder.setMessage(R.string.about_msg);
builder.show();
}
});
final Button buttonQuit = (Button)findViewById(R.id.ButtonQuit);
buttonQuit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainMenu.this.finish();
}
});
}
}

4. SerialPortPreferences.java


<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="BAUDRATE">300</string>
<string name="DEVICE">/dev/ttyS2</string>
</map>
android_serialport_api代码分析的更多相关文章
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
- pmd静态代码分析
在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...
- [Asp.net 5] DependencyInjection项目代码分析-目录
微软DI文章系列如下所示: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Autofac [ ...
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)
Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- STM32启动代码分析 IAR 比较好
stm32启动代码分析 (2012-06-12 09:43:31) 转载▼ 最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- SonarQube-5.6.3 代码分析平台搭建使用
python代码分析 官网主页: http://docs.sonarqube.org/display/PLUG/Python+Plugin Windows下安装使用: 快速使用: 1.下载jdk ht ...
- angular代码分析之异常日志设计
angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...
随机推荐
- 对java位运算之异或运算的一点记录
首先,异或运算是,每个位上的数不同为1,相同为0. 其次,对两个数值变量的值进行三次异或运算就等于是交换了两个变量的值. 例如: int a = 4; int b = 10; a = a ^ b; b ...
- web 给大家分享一个好玩的东西,也许你那块就用的到
先看效果: 就这个效果.当你点击右上角的删除按钮,会删除掉item1. 上代码: <!DOCTYPE html> <html> <head> <meta ch ...
- cesium随笔 — 获取当前鼠标的经度、纬度、高度
代码: function getPosition() { //得到当前三维场景 var scene = viewer.scene; //得到当前三维场景的椭球体 var ellipsoid = sce ...
- python单引号和双引号的区别
今天在网上爬虫的时候,很奇怪的发现python的字符串既可以用双引号又可以用单引号,于是就上网百度了一下原因. 原来由于字符串中有可能既有双引号又有单引号,例如: 字符串:demo'1'. 这时候就可 ...
- “全栈2019”Java多线程第十三章:线程组ThreadGroup详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- iOS水波纹效果
最近也是在学习一些动画效果的实现,也找了一些Demo进行练习,先放出原地址http://www.cocoachina.com/ios/20161104/17960.html,感谢大神的分享,作者对实现 ...
- 64位虚拟机中安装CentOS_6.7
虚拟机VirtualBox-4.3.24-98716-Win.1425444683.exe,操作系统选用CentOS-6.7-x86_64-LiveDVD .iso. 1) 启动VirtualBox, ...
- LeetCode 101 对称二叉树的几种思路(Python实现)
对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2 ...
- SpringQuartz定时任务cronExpression配置
<!-- 每一个小时跑一次--> <property name="cronExpression"> <value>0 0 0/1 * * ?&l ...
- C#-WebForm-★★★JQuery-动画★★★
1.show(),hide() 瞬间显示或隐藏,隐藏后不占有位置 2.slideDown(),slideUp() 向下拉伸显示,向上缩减隐藏 3.fadeIn(),fadeOut() 渐显或渐隐,隐藏 ...