今天android 开源代码发布。 并在随后的博文里会对部分代码进行解析。
关于android manager 软件博文地址为:http://blog.youkuaiyun.com/acanoe/article/details/9044525
PC 端源码地址为:https://github.com/acanoe/androidmanager
android 手机端源码地址为:https://github.com/acanoe/phonemanager
项目主要涉猎的技术方向为:QT,Linux C, android SDK/NDK。
项目纵览:
主机主动发送请求TCP
1. 数据通信命令、应答格式:
标志 | 命令CMD | 数据长度Length | 数据DATA |
0x77777777 | 1byte | 4byte | Length |
2. 数据通信各字段说明:
字段 | 长度 | 说明 | 补充 |
标志 | 4 | 标示一个数据包的开始, 用于数据包的对齐. | |
CMD | 1 | 命令字,各种操作的指令 | 该字段发送和接收应该相同 |
Length | 4 | 数据区的四个字节,表示数据长度Length字节,先传输高位字节,再顺次传输其余低位字节,即大端模式 | |
Data | Length | 共Length个字节的数据DATA。若Length=0,则无此区域。 |
通信协议描述:
每一帧数据需要以包头为起始点, 客户端需要按接收的包头来校验数据,按数据命令CMD 来解析数据包, 目前数据包帧格式为:
#define CMD_IMAGE 1 // 图片数据包
#define CMD_VIDEO 2 // 视频数据包
#define CMD_MUSIC 3 // 音乐数据包
#define CMD_APP 4 // 应用数据包
#define CMD_MMS 5 // 短信数据包
#define CMD_BOOK 6 // 电话簿数据包
#define CMD_STORAGE 7 // 存储数据包
#define CMD_SENDMESSAGE 8 // 发送短信数据包
#define CMD_CALLPHONE 9 // 打电话数据包
#define CMD_ALL 10 // 所有数据总数据包
3.4 软件流程
数据接收成功跳转到UI
软件开启
USB 端口检测
发现android 设备 有新版本安装
检测 客户端应用版本
等待数据 无新版本,启动
加载UI 界面
跳转到界面
数据接收失败 post 失败信号
进入正常数据访问流程
4.1.2.2 NDK 底层模块
Andorid ndk API
public static native int setappinfo(int apppath, int appattribute,
String appname, String packname, String appversion, String size,int count);
public static native void setimageinfo(String name, String path,
String size, int count);
public static native void setvideoinfo(String name, String path,
String size, int count);
public static native void setmusicinfo(String name, String path,
String size, int count);
public static native int setbookinfo(String name, String number, int count);
public static native void setmmsinfo(String name, String number ,String data, String time,int typeID,int count);
public static native void setstorageinfo(String sdSize, String sdAvail ,String memorySize, String memoryAvail);
public native static void exitprograme();
public static native String getmmsnumber();
public static native String getmmsdata();
public static native void gotosend(int argv);
public native static void startservice();
public native static void jnipthreadinit();
public native static void imageinfosend();
public native static int whatyouwant();
public native static String getphonenumber();