IT生涯,我记忆中的那些命令

Catalogue
  1. 1. adb 命令
    1. 1.1. APK操作
  2. 2. git 命令
  3. 3. Linux 命令
  4. 4. 批处理 命令

Star Here ~~.

Soft-Tools 完整目录如下(持续更新,欢迎补充~):

命令类

Menu Desc.
Git Git Commands
Adb Adb Commands
Bat Bat Commands
Vim Vim Commands
Regular Regular
Python Python Commands

adb 命令

汇总

  • adb kill-server

  • adb devices

  • adb install [-l] [-r] [-s]
    -l 表示锁定该程序;
    -r 表示替换原有的apk安装;
    -s 表示安装在SD卡内,而不是设备内部存储

  • adb uninstall [-k]
    -k 表示不删除程序运行所产生的数据和缓存目录(如软件的数据库文件)

  • adb shell pm clear
    清除应用缓存

  • taskkill /f /im adb*

  • adb shell getprop ro.build.version.release 版本

  • adb shell + cat /system/build.prop 查看手机配置信息

  • adb shell getprop dalvik.vm.heapsize

获取进程号

  • adb shell
  • ps | grep 进程名
  • cat /proc/pid/oom_adj //其中pid是上述grep得到的进程号

查看包名相关

  • adb shell pm list package [-f] 获取手机内所有包名
    -f 包名+路径

  • adb shell dumpsys window w | findstr \/ | findstr name=
    查看包名

  • adb shell dumpsys activity> d:\log.txt
    导出包名(log中搜索 Stack #1,然后寻找cmp=)

  • adb shell + logcat | grep START

APK操作

  • apktool d x.apk

  • apktool b x

  • apkReSign.jar

git 命令

汇总

  • git log 历史记录

  • git status

  • git clean -df

  • git branch -vv

Git配置相关

  • git config -l
    查看Git当前配置信息

  • 配置
    git config –global user.email “you@email.com”
    git config –global user.name “Your Name”
    git config –global core.editor “nano”
    git config –global color.ui true

删除远程分支A

  • git push origin –delete A

  • git push origin :A

回退

  • 远程服务器支持SSH前提下

git reset –mixed // 此为默认方式,不带任何参数的git reset,就是这种方式,它回退到某个版本,只保留源码,回退commit和stage信息

git reset –soft // 回退到某个版本,只回退了commit的信息,不会恢复stage(如果还要提交,直接commit即可)

git reset –hard // 彻底回退到某个版本, 本地的源码也会变为上一个版本的内容

  • 远程服务器不支持SSH

git branch old_master //新建old_master分支 作为备份,以防万一

git push origin old_master:old_master //将本地的old_master分支 推送到远程的old_master

git reset –hard //本地仓库 彻底回退到某一个版本

git push origin :master // 删除远程的master分支

git push origin master //重新创建远程master分支

Linux 命令

批处理 命令

Update time

08/08/2014 Create this page



By SkySeraph-2014

版权声明


SkySeraph by SkySeraph is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Bob创作并维护的SkySeraph博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证.
本文首发于SkySeraph博客( http://skyseraph.com ),版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

微信扫码打赏SkySeraph

如果您愿意捐助其它金额请戳我~~,扫码支付宝/微信

本文永久链接:http://skyseraph.com/2014/08/08/Tools/ITLifeCmds/

Comments

IT生涯, 我的常用软件清单

Catalogue
  1. 1. Windows篇
    1. 1.1. 装机必备
    2. 1.2. 办公相关
    3. 1.3. 开发相关
    4. 1.4. 设计相关
    5. 1.5. 安全相关
      1. 1.5.1. 反编译/逆向
  2. 2. Mac篇
    1. 2.1. 装机必备
    2. 2.2. 实用软件
    3. 2.3. 开发工具
    4. 2.4. 实用技巧
    5. 2.5. 实用参考
  3. 3. Chrome篇
    1. 3.1. 常用命令
    2. 3.2. 实用插件
    3. 3.3. 实用参考
  4. 4. Linux篇
  5. 5. 后记

  • 满纸荒唐言 一把辛酸泪 ~~

前两天把系统给重装了下,好像最近一次安装应该是两年前了,一般情况下不愿意再做此类耗时无聊的事情,但没法,拥有SSD和高配置内存,开几个IDE却卡成翔,系统分析折腾了老半天还是决定重装了,重装后的那个清爽真是无与伦比, 至少依旧可以在我的Win 10上折腾不用开发也搬迁到MacBook了。

清爽归清爽,后续软件安装就比较折腾了,电脑上遗留的都是两年前比较老的版本了,没法只能一个一个网上查找,于是重新整理了此篇文章,将自己的软件清单做下梳理,也便于后续持续利用。
此文已更新到Github,希望大家一起维护.

Star Here ~~.

Soft-Tools 完整目录如下(持续更新,欢迎补充~):

通用篇

目录 简介
Windows Windows Soft Tools
Mac Mac Soft Tools
Linux Linux Tools
Chrome Chrome Tools
Web Web Tools
HardWare HardWare Tools

专题篇

目录 简介
Android Android Tools
iOS iOS Tools
Game Game Dev Tools
NFC NFC Tools
AI专场 AI Tools
测试专场 Test Tools
安全逆向 Reverse Tools

命令类

Windows篇

装机必备

代理/翻墙

笔记类工具

系统相关

实用工具

办公相关

开发相关

环境篇

IDE篇

游戏专题

数据库专题

网络抓包

终端工具

开发辅助 & 开发必备

设计相关

UML

思维导图

产品设计

图像专题

安全相关

反编译/逆向

Java & Jar (Android)

Hook Tools

C++ & So (Android)

C# & Dll & EXE

iOS

Hook Tools


Mac篇

装机必备

实用软件

  • Homebrew 包管理工具,方便获得各类实用工具
    使用: brew install/uninstall xx

  • iTerm2 终端工具,替代Mac自带Terminal

  • Sublime Text 2

  • tree: 以树状结构显示当前文件或文件夹的命令

  • Mou/MacDown Markdown 编辑器

  • CheatSheet 长按⌘显示当前程序的快捷键列表

  • Alfred 3 快速搜索,No mouse

  • Vimium Google Chrome 扩展, 纯键盘操作 Chrome

  • F.lux 护眼工具

  • The Unarchiver 压缩和解压 rar 格式的文件

  • icdiff 高亮文件差异对比工具

  • CleanMyMac 清理系统、卸载软件,查看系统资源消耗等功能

  • RescueTime 软件使用习惯记录和统计

  • wakatime 程序员编程习惯统计

  • iTools iphone管理工具

  • 文件查看工具 iFunbox & iExplorer

开发工具

实用技巧

  • 在 Finder 窗口显示更多信息

  • 在 Finder 标题栏显示完整路径
    defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

  • 显示 Finder 隐藏文件
    defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder

    恢复默认
    defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder

  • 设置 触发角。 在 Mac 中可以把鼠标/触控板移向屏幕的四个角落时可以触发一个操作,包括“将显示器置入睡眠状态”这个功能,配合“睡眠后需要输入密码唤醒”,可以在匆忙离开座位时滑一下鼠标就关屏,很方便。

实用参考


Chrome篇

常用命令

  • chrome://extensions/

  • chrome://apps/

实用插件

IT民工

实用参考


Linux篇


GitHub stars

GitHub watchers

GitHub followers

后记

本文首发于skyseraph.com“IT生涯, 我的常用软件清单”

Update time
03/12/2017 Update
08/06/2014 Create this page



By SkySeraph-2014

版权声明


SkySeraph by SkySeraph is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Bob创作并维护的SkySeraph博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证.
本文首发于SkySeraph博客( http://skyseraph.com ),版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

微信扫码打赏SkySeraph

如果您愿意捐助其它金额请戳我~~,扫码支付宝/微信

本文永久链接:http://skyseraph.com/2014/08/06/Tools/IT生涯,我的常用软件清单/

Comments

手掌手指分割算法(源码)

Catalogue
  1. 1. 开发环境
  2. 2. 功能原理
  3. 3. 算法效果

开发环境

开发环境

  • 64 bits Windows OS (Win8.1)
  • VS2013
  • OpenCV 2.4.9

功能原理

算法要求

完成将Camera拍摄的手掌图片中分割出每个手指用于指纹识别

算法流程

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#ifdef TIME_RUN_COST
double duration = static_cast<double>(cv::getTickCount());//time
#endif
cout << "filename=" << filename <<endl;
Mat src = imread(filename, CV_LOAD_IMAGE_COLOR);
if (src.empty())
{
cout << "imread error!!!";
getchar();
return -1;
}
#ifdef BOB_DBG_COM
memset(out_filename, 0, sizeof(out_filename) / sizeof(char));
sprintf(out_filename, "%s-%s.jpg",out_name,"0-0src");
imwrite(out_filename, src);
#endif // BOB_DBG_COM
#if 0
int scaleSize = 4;
resize(src, src, Size(src.cols / scaleSize, src.rows / scaleSize), 0, 0, CV_INTER_AREA);
memset(out_filename, 0, sizeof(out_filename) / sizeof(char));
sprintf(out_filename, "%s-%s.jpg", out_name, "0-0src");
imwrite(out_filename, src);
#endif
#if 1
cout << "cut..." << endl;
int width = src.cols;
int height = src.rows;
float scale = 0.8;
cout << "width=" << width << ",height=" << height << endl;
Rect rect(0, 0, width, height*scale);
Mat imgCut;
imgCut = src(rect).clone();
#endif
//Mat imgCut = src;
cout << "filter..." << endl;
// filter2D(imgCut, imgCut, -1, kernel);
GaussianBlur(imgCut, imgCut, Size(5, 5), 0, 0);
// blur(imgCut, imgCut, Size(5, 5));
#if 0
cout << "EqualizeHist..." << endl;
Mat matOutEqualizeHist = Mat(imgCut.size(), CV_8UC3);
//IplImage* pImgOutEqualizeHist = cvCreateImage(cvSize(cameraFrame.cols, cameraFrame.rows), IPL_DEPTH_8U, 3);
IplImage pImgInEqualizeHist = (IplImage)(imgCut); // Mat-> IplImage
IplImage* pImgOutEqualizeHist = EqualizeHistColorImage(&pImgInEqualizeHist);
matOutEqualizeHist = pImgOutEqualizeHist; //IplImage -> Mat
#endif
// out
Mat imgSrc = Mat(imgCut.size(), CV_8UC1);
imgCut.copyTo(imgSrc);
Mat imgContour = Mat(imgSrc.size(), CV_8UC1);
#ifdef FINGER_EXTRACT_AT_NIGHT
cout << "Nigth,Threshold..." << endl;
Mat imgTmp;// = Mat(imgCut.size(), CV_8UC1);
cvtColor(imgSrc, imgTmp, CV_RGB2GRAY);
cvThresholdOtsu(&((IplImage)imgTmp), &((IplImage)imgTmp));
imgTmp.copyTo(imgContour);
#else
cout << "Day,Skin..." << endl;
Mat imgSkin2 = Mat(imgSrc.size(), CV_8UC1);
IplImage* pImgSkin2 = cvCreateImage(cvSize(imgSrc.cols, imgSrc.rows), IPL_DEPTH_8U, 1);
IplImage pImg2 = (IplImage)(imgSrc); // Mat-> IplImage
cvSkinOtsu(&pImg2, pImgSkin2);
imgSkin2 = pImgSkin2; //IplImage -> Mat
//Mat imgSkin = Mat(imgSrc.size(), CV_8UC1);
imgSkin2.copyTo(imgContour);
#endif
/////////////////////// Contours
cout << "Find Contours..." << endl;
vector<vector<cv::Point> > contours;
vector<Vec4i> hierarchy;
findContours(imgContour, contours, hierarchy,
CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0));
sort(contours.begin(), contours.end(), compareContourAreas);
int contours_num = contours.size();
cout << "contours_num=" << contours_num << endl;
#if 0
vector<vector<Point>>::const_iterator itContours = contours.begin();
//for (int i = 0; i < contours.size(); i++)
for (; itContours != contours.end(); ++itContours)
{
cout << "Size: " << itContours->size() << endl;//每个轮廓包含的点数
}
#endif
#if 1 //usd
// Eliminate too short or too long contours
int cmin = 100; // minimum contour length
//int cmax= 1000; // maximum contour length
vector<vector<Point>>::const_iterator itc = contours.begin();
while (itc != contours.end())
{
//if (itc->size() < cmin || itc->size() > cmax)
if (itc->size() < cmin) {
itc = contours.erase(itc);
}
else
++itc;
}
contours_num = contours.size();
cout << endl << "contours_num after Eliminate=" << contours_num << endl;
#endif
// extract the contour img
cout << "Extract Contours..." << endl;
if (contours_num >= 4)
{
Mat img1, img2, img3, img4;
std::vector<cv::Point> biggest1Contour = contours[contours_num - 1];
std::vector<cv::Point> biggest2Contour = contours[contours_num - 2];
std::vector<cv::Point> biggest3Contour = contours[contours_num - 3];
std::vector<cv::Point> biggest4Contour = contours[contours_num - 4];
std::vector<cv::Point> smallestContour = contours[0];
extractFingerImg2(contours, imgSrc, img1, contours_num, 1);
extractFingerImg2(contours, imgSrc, img2, contours_num, 2);
extractFingerImg2(contours, imgSrc, img3, contours_num, 3);
extractFingerImg2(contours, imgSrc, img4, contours_num, 4);
}
else if (contours_num == 3)
{
Mat img1, img2, img3;
std::vector<cv::Point> biggest1Contour = contours[contours_num - 1];
std::vector<cv::Point> biggest2Contour = contours[contours_num - 2];
std::vector<cv::Point> biggest3Contour = contours[contours_num - 3];
std::vector<cv::Point> smallestContour = contours[0];
extractFingerImg2(contours, imgSrc, img1, contours_num, 1);
extractFingerImg2(contours, imgSrc, img2, contours_num, 2);
extractFingerImg2(contours, imgSrc, img3, contours_num, 3);
}
else if (contours_num == 2)
{
Mat img1, img2;
std::vector<cv::Point> biggest1Contour = contours[contours_num - 1];
std::vector<cv::Point> biggest2Contour = contours[contours_num - 2];
std::vector<cv::Point> smallestContour = contours[0];
extractFingerImg2(contours, imgSrc, img1, contours_num, 1);
extractFingerImg2(contours, imgSrc, img2, contours_num, 2);
}
else if (contours_num == 1)
{
Mat img1;
std::vector<cv::Point> biggest1Contour = contours[contours_num - 1];
std::vector<cv::Point> smallestContour = contours[0];
extractFingerImg2(contours, imgSrc, img1, contours_num, 1);
}
else
{
cout << "error" << endl;
}
#ifdef TIME_RUN_COST
duration = static_cast<double>(cv::getTickCount()) - duration;
duration /= cv::getTickFrequency(); // the elapsed time in ms
cout << "time cost=" << duration << "s"<<endl;
#endif
#ifdef BOB_DBG_COM
memset(out_filename, 0, sizeof(out_filename) / sizeof(char));
sprintf(out_filename, "%s-%s.jpg", out_name, "4-imgContoursInSrc");
imwrite(out_filename, imgSrc);
//imwrite("4-imgContoursInSrc.jpg", imgSrc);
#endif // BOB_DBG_COM

算法效果

白天复杂场景

晚上场景

批量测试场景



By SkySeraph-2014

合作联系:skyseraph00@163.com

————————

版权声明

SkySeraph by SkySeraph is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Bob创作并维护的SkySeraph博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证.
本文首发于SkySeraph博客( http://skyseraph.com ),版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

微信扫码打赏SkySeraph

如果您愿意捐助其它金额请戳我~~,扫码支付宝/微信

本文永久链接:http://skyseraph.com/2014/07/24/CV/手掌手指分割算法/

Comments

《Android NFC 开发实战详解 》

Catalogue
  1. 1. 啰嗦
  2. 2. About
    1. 2.1. LINK
    2. 2.2. NFC相关 QQ群
  3. 3. MENU
  4. 4. CODE & 样章
  5. 5. 勘误和支持
    1. 5.1. 勘误ING

啰嗦

哇哈..,历时一年多,一哥的第一本书终于要出版了 (原本应该今年年初出版的,跟马航一样, 莫名其妙就拖到了现在 , 据出版社最新消息, 预计三月中下旬正式出版,敬请期待), 封面如下, 感谢人民邮电的张涛老师为本书的付出,……
这本书的写作大概是从去年的3月左右开始的, 全书分为三大块,分别为基础篇,应用篇和实例篇(具体见下述MENU)…


About



NFC相关 QQ群

NFC产品联盟 221281036


MENU

第一篇 基础篇

第1章 NFC概述

  • 1.1 RFID基础… 2

    • 1.1.1 RFID简介…. 2

    • 1.1.2 RFID系统的组成和工作原理…. 3

    • 1.1.3 RFID应用概述…. 6

  • 1.2 NFC基础… 7

    • 1.2.1 NFC简介…. 7

    • 1.2.2 技术比较…. 8

    • 1.2.3 NFC设备…. 11

    • 1.2.4 NFC通讯模式…. 11

    • 1.2.5 NFC工作模式和应用分类…. 13

  • 1.3 NFC工作原理… 15

  • 1.4 NFC应用实例… 16

    • 1.4.1 NFC生态系统…. 16

    • 1.4.2 NFC应用实例…. 17

  • 1.5 NFC开发常用网络资源… 19

  • 1.6 本章小结… 20

第2章 NFC协议基础

  • 2.1 NFC技术标准… 21

  • 2.2 NFC标准规范… 24

    • 2.2.1 ISO 14443. 24

    • 2.2.2 NFCIP-1. 25

    • 2.2.3 MIFARE. 26

    • 2.2.4 FeliCa. 26

  • 2.3 NFC TAG.. 27

    • 2.3.1 NFC Forum定义的Tag类型…. 27

    • 2.3.2 NXP特定的Tag类型…. 29

  • 2.4 NDEF协议… 29

    • 2.4.1 NDEF概述…. 30

    • 2.4.2 NDEF实例…. 33

  • 2.5 RTD协议… 34

    • 2.5.1 RTD_TEXT.. 34

    • 2.5.2 RTD_URI 35

    • 2.5.3 RTD_Smart Poster 36

  • 2.6 LLCP协议… 37

  • 2.7 NFC协议汇总… 39

  • 2.8 本章小结… 40

第3章 NFC开发中的Android基础… 41

  • 3.1 Android概述… 41

    • 3.1.1 Android基础概念…. 41

    • 3.1.2 Android开发工作…. 42

    • 3.1.3 Android开发环境…. 42

  • 3.2 Android应用程序结构… 44

  • 3.3 Android系统架构… 45

  • 3.4 NFC开发中必备的Android知识… 47

    • 3.4.1 Activity生命周期…. 47

    • 3.4.2 Intent-Filter 48

  • 3.5 Android TV中的NFC开发… 50

    • 3.5.1 Android TV+集成NFC硬件…. 50

    • 3.5.2 Android TV+集成NFC Tag. 51

    • 3.5.3 Android TV+集成NFC的RC.. 52

    • 3.5.4 Android TV +集成NFC的RC+集成NFC硬件…. 53

  • 3.6 本章小结… 54

第二篇 应用/技术篇

第4章 Android NFC API概述… 56

  • 4.1 Android中的NFC API 56

    • 4.1.1 android.nfc包…. 56

    • 4.1.2 android.nfc.tech包…. 59

    • 4.1.3 NFC API使用第一步:NFC在Android Manifest中的设置…. 59

    • 4.1.4 NFC API使用第二步:NfcAdapter的获取…. 60

  • 4.2 NFC标签调度系统… 62

    • 4.2.1 NFC前台调度系统…. 62

    • 4.2.2 NFC标签调度系统…. 63

    • 4.2.3 NFC标签映射…. 64

    • 4.2.4 应用程序如何调度NFC标签…. 65

  • 4.3 NFC Intent过滤器… 66

    • 4.3.1 ACTION_NDEF_DISCOVERED.. 66

    • 4.3.2 ACTION_TECH_DISCOVERED.. 70

    • 4.3.3 ACTION_TAG_DISCOVERED.. 71

  • 4.4 Android应用程序记录… 72

    • 4.4.1 AAR基础…. 72

    • 4.4.2 AAR和Intent 过滤器的区别…. 72

    • 4.4.3 Android中AAR的使用…. 73

  • 4.5 Android NFC API与系统版本对应表… 73

  • 4.6 本章小结… 74

第5章 NFC读写模式开发… 79

  • 5.1 关于NFC读写模式… 79

  • 5.2 TAG读操作(NDEF数据)… 79

    • 5.2.1 TAG读操作步骤…. 80

    • 5.2.2 TAG读操作实例…. 86

  • 5.3 TAG写操作(NDEF数据)… 98

    • 5.3.1 TAG写操作步骤…. 98

    • 5.3.2 TAG写操作实例…. 108

  • 5.4 基于AAR的TAG读写操作… 121

  • 5.5 非NDEF数据TAG读操作… 121

  • 5.6 本章小结… 123

第6章 NFC P2P模式开发… 124

  • 6.1 关于NFC P2P模式… 124

    • 6.1.1 Beam使用的条件…. 124

    • 6.1.2 Beam Enable的判断…. 125

  • 6.2 Android NFC P2P开发基础… 126

    • 6.2.1 Android Beam实现的几种方式…. 127

    • 6.2.2 Beam NDEF消息(BNM)…. 129

    • 6.2.3 接收Beam消息(RBM)…. 130

    • 6.2.4 enableForegroundNdefPush的使用…. 130

  • 6.3 Android NFC P2P开发实例… 132

    • 6.3.1 实例1:使用setNdefPushMessageCallback实现Android Beam.. 132

    • 6.3.2 实例2:使用setNdefPushMessage实现Android Beam.. 143

    • 6.3.3 实例3:使用enableForegroundNdefPush实现Android Beam.. 151

    • 6.3.4 实例4:结合AAR实现Android Beam.. 157

  • 6.4 Android NFC P2P开发进阶… 162

    • 6.4.1 Beam实现文件传输的方法…. 162

    • 6.4.2 Beam文件传输实例1:setBeamPushUris. 164

    • 6.4.3 Beam文件传输实例2:setBeamPushUrisCallback. 169

  • 6.5 本章小节… 172

第7章 NFC卡模拟模式开发… 173

  • 7.1 关于NFC卡模拟模式… 173

  • 7.2 基于硬件的卡模拟—虚拟卡模式… 174

    • 7.2.1 虚拟卡模式概述…. 174

    • 7.2.2 安全单元SE和SWP. 174

    • 7.2.3 虚拟卡模式的开发…. 177

  • 7.3 基于软件的卡模拟—主机卡模式… 183

    • 7.3.1 主机卡模式概述…. 183

    • 7.3.2 主机卡模式的优点…. 184

    • 7.3.3 主机卡模式的隐患…. 185

    • 7.3.4 主机卡模式的开发…. 187

  • 7.4 卡模拟模式前景… 187

  • 7.5 本章小结… 188

第三篇 实例篇

第8章 NFC实例一——WiFi快速连接助手… 190

  • 8.1 开发背景及功能概述… 190

    • 8.1.1 开发背景…. 190

    • 8.1.2 功能概述…. 190

    • 8.1.3 开发环境和目标平台…. 191

  • 8.2 软件预览及功能结构… 191

    • 8.2.1 软件预览…. 191

    • 8.2.2 功能结构…. 194

  • 8.3 主界面设计… 195

    • 8.3.1 WiFi信息配置界面…. 195

    • 8.3.2 WiFi配置信息TAG写入界面…. 197

    • 8.3.3 AndroidManifest. Xml文件…. 198

  • 8.4 主程序实现… 199

    • 8.4.1 WiFi配置信息输入模块…. 199

    • 8.4.2 WiFi配置信息TAG写入模块…. 203

    • 8.4.3 TAG WiFi信息读取模块…. 207

    • 8.4.4 WiFi自动连接模块…. 211

    • 8.4.5 UI辅助模块…. 214

  • 8.5 本章小结… 215

第9章 NFC实例二——EasyTagWrite.. 216

  • 9.1 开发背景及功能概述… 216

    • 9.1.1 开发背景…. 216

    • 9.1.2 功能概述…. 216

    • 9.1.3 开发环境和目标平台…. 217

  • 9.2 软件预览及功能结构… 217

    • 9.2.1 软件预览…. 217

    • 9.2.2 功能结构…. 220

  • 9.3 主界面设计… 220

  • 9.4 主程序实现… 223

    • 9.4.1 UI交互模块…. 223

    • 9.4.2 NDEF消息生成模块…. 228

    • 9.4.3 NDEF消息写入模块…. 231

  • 9.5 本章小结… 231

第10章 NFC实例三——NFCard.. 232

  • 10.1 NFCard概述… 232

    • 10.1.1 简介…. 232

    • 10.1.2 环境平台…. 232

  • 10.2 软件预览及功能结构… 233

    • 10.2.1 软件预览…. 233

    • 10.2.2 功能结构…. 234

  • 10.3 主界面解析… 235

  • 10.4 主程序解析… 238

    • 10.4.1 UI交互模块…. 239

    • 10.4.2 Card读取模块…. 244

    • 10.4.3 Card解析模块…. 247

  • 10.5 本章小结… 249

附录 缩略语和约定语 250


CODE & 样章

*书中实例源码

*封面及目录

*第四章


勘误和支持

由于作者水平有限,加之写作时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评和指正。若有问题,可通过邮箱与笔者共同讨论,笔者联系方式为:skyseraph00@163.com

支持我
支持我


勘误ING

  • P96页,5.2.2下面的”(1)主程序P2PDemo1.java….”, 改为 “(1)主程序ReadTag_RTDUrl.java…”
  • P118页,5.3.2下面的”主程序P2PDemo1.java…” 改为“主程序WriteTag_RTDUrl.java…”
  • P251页,在NDEF消息获取模块代码中,第4~45行之间漏掉了判断,在第4行前加上(GitHub已更新)
  • P121页类似,为了演示将三个判断都加进去了,其中有两个(是具体TAG类型而定,NDEF和TAG)需要加return的.

  • P73,P89,P108页 中的 ACTION_TAB_DISCOVERED,改为ACTION_TAG_DISCOVERED

  • P68页,ACTION_NFC_SETTINGS…使用该方法,需要在Android API 9+以上系统中…(改为API 16+)

  • P36页,表2-6中 Payload_lenght改为Payload_length

(收集中…)



By SkySeraph-2014
SkySeraph cnBlogs
SkySeraph CSDN

版权声明


SkySeraph by SkySeraph is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Bob创作并维护的SkySeraph博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证.
本文首发于SkySeraph博客( http://skyseraph.com ),版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

微信扫码打赏SkySeraph

如果您愿意捐助其它金额请戳我~~,扫码支付宝/微信

本文永久链接:http://skyseraph.com/2014/03/14/NFC/《Android NFC 开发实战详解 》/

Comments

写在年末, 我的2013

Catalogue
  1. 1. 啰嗦
  2. 2. 身心
  3. 3. 事业
  4. 4. 能力/个人提升
  5. 5. 家庭
  6. 6. 价值
  7. 7. 财富
  8. 8. 写入历史

啰嗦

好久没写博客了, 遗忘的历史,遗忘了自我… 岁月拾回,几度轮回…
2013,奇妙的一年,糊涂的一年,说不清,理更乱… 从雄心壮志,斗志昂扬,到忙得一塌糊涂,到习惯麻木,而年末却极其清闲无聊,完全找不着自我,以至于能够静下心来好好回顾一年,好好规划即将开始之路…
我的2013,这样走过…

身心

事业

能力/个人提升

家庭

价值

财富

写入历史


DEL, F5


By SkySeraph-2013
SkySeraph cnBlogs

版权声明


SkySeraph by SkySeraph is licensed under a Creative Commons BY-NC-ND 4.0 International License.
Bob创作并维护的SkySeraph博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证.
本文首发于SkySeraph博客( http://skyseraph.com ),版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

微信扫码打赏SkySeraph

如果您愿意捐助其它金额请戳我~~,扫码支付宝/微信

本文永久链接:http://skyseraph.com/2013/11/30/SkySeraph/Life/写在年末, 我的2013/

Comments