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代码分析的更多相关文章

  1. Android代码分析工具lint学习

    1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...

  2. pmd静态代码分析

    在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...

  3. [Asp.net 5] DependencyInjection项目代码分析-目录

    微软DI文章系列如下所示: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Autofac [ ...

  4. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)

    Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...

  5. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  6. STM32启动代码分析 IAR 比较好

    stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...

  7. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

  8. SonarQube-5.6.3 代码分析平台搭建使用

    python代码分析 官网主页: http://docs.sonarqube.org/display/PLUG/Python+Plugin Windows下安装使用: 快速使用: 1.下载jdk ht ...

  9. angular代码分析之异常日志设计

    angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...

随机推荐

  1. lucene整理3 -- 排序、过滤、分词器

    1.    排序 1.1. Sort类 public Sort() public Sort(String field) public Sort(String field,Boolean reverse ...

  2. Ubuntu 12.04 Openssh 安装过程

    1.输入 apt-get install openssh-server 注意 出现依赖 需要使用 查看依赖是否需要,如果不需要可以直接删除,sudo apt-get remove XXXX 或者sud ...

  3. django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境

    一.聚合查询 aggregate(*args, **args) 先引入需要的包,再使用聚合查询 #计算所有图书的平均价格 from django.db.models import Avg Book.o ...

  4. 【ocp-12c】最新Oracle OCP-071考试题库(47题)

    47.(10-6)choose two You need to calculate the number of days from 1st January 2007 till date. Dates ...

  5. CTF 介绍及杂项

    CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过 ...

  6. kali linux之无线渗透(续)

    Airolib 设计用于存储ESSID和密码列表,计算生成不变的PMK(计算资源消耗型) PMK在破解阶段被用于计算PTK(速度快,计算资源要求少) 通过完整性摘要值破解密码SQLite3数据库存储数 ...

  7. 抓包工具Fiddler使用教程

    一.基本原理 Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888 二.Fiddler抓取https设置 1.启动Fiddler,打开菜单栏中的 Too ...

  8. HTML Strip Char Filter

    The html_strip character filter strips HTML elements from the text and replaces HTML entities with t ...

  9. 题目1004:Median(查找中位数)

    问题来源 http://ac.jobdu.com/problem.php?pid=1004 问题描述 给你两个非降序序列,让你求中位数.中位数为第(n+1)/2个数(从0开始计算). 问题分析 这个问 ...

  10. 开源系统-edusoho在线教育

    #部署 ```bash [root@localhost ~]# docker run --name edusoho -tid         -p 9900:80         -e DOMAIN= ...