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代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...
随机推荐
- C#递归例程
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- django drf Token验证
https://www.django-rest-framework.org/api-guide/authentication/#basicauthentication 1.INSTALLED_APPS ...
- cesium编程中级(一)添加示例到Sandcastle
cesium编程中级(一)添加示例到Sandcastle 添加示例到Sandcastle在cesium编程入门(七)3D Tiles,模型旋转中提到过,这里是一份完整的说明 创建例子 开启node服务 ...
- Syncthing源码解析 - 源码目录说明!
Syncthing是一个免费开源的p2p软件,Go语言编写的! 官网:https://syncthing.net/ 源码:https://github.com/syncthing/syncthing/ ...
- 微信企业号发送监控消息【php】
公司这边有做监控异常并将消息发送到企业公众号的功能.大概如下: 定时任务检测异常消息 将消息存入redis队列 定时处理队列异常消息 发送到微信企业号对应的部门组 这里我们来看一下微信发送过程,其他不 ...
- java学习笔记—第三方操作数据库包专门接收DataSource-dbutils (30)
Dbutils 操作数据第三方包.依赖数据源DataSource(DBCP|C3p0). QueryRunner – 接收DataSource|Connection,查询数据删除修改操作.返回结果. ...
- PHP中count()和sizeof()
php中获取数组长度函数有两个count()和sizeof(),如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0.两函数功能一样,手册上讲,sizeof() ...
- 【微信小程序】——rpx、px、rem等尺寸间关系浅析
最近开发微信小程序,在写样式表的时候发现用PX的效果不太理想,而官方文档用rpx来做响应式布局单位,就仔细研究了下,在此做个小总结: 这里先引用官方定义的尺寸单位‘rpx’:可以根据屏幕宽度进行自适应 ...
- Nginx的反向代理和负载均衡
1 Nginx的反向代理 1.1 什么是反向代理 正向代理 反向代理: 反向代理服务器是引用在服务端.决定哪台服务器提供服务. 1.2 反向代理的模拟 1.2.1 反向代理 应该有一个nginx服务器 ...
- 代码 | 自适应大邻域搜索系列之(4) - Solution定义和管理的代码实现解析
前言 上一篇讲解了destroy和repair方法的具体实现代码,好多读者都在喊酸爽和得劲儿--今天这篇就讲点简单的,关于solution的定义和管理的代码实现,让大家回回神吧--哈哈. 01 总体概 ...