完美实现PC端软件控制手机(无需安装任何APK)(一)

来源:互联网 发布:网络电视怎么设置wifi 编辑:程序博客网 时间:2024/06/05 08:41

(需要了解开发细节和demo的朋友可以私信我或者加微信Kingthink)

一、背景

有一天,手机屏幕摔坏掉,我只能看那寥寥可数的开机、Power键,欲哭无泪,
我想要有一款PC端控制软件在必要时就能解围;

有一天我想控制多台手机完成相同的内容(比如:刷微博,刷朋友圈),
然后完美自动完成类似活动,比如:在指定的时间给指定的号码发送一条暧昧短信,或者在指定的时间下载一个酷爽APK并安装又或者在忙的时候自动刷新新闻,这样我在没有wifi的地方也能看一天的新闻了.

二、需求分析

  • 1. 手机通过USB与PC端连接,无需安装APK,无需做其他多余操作,开启PC端软件,直接显示联机控制

  • 2. PC端显示等比例手机图像,在PC端实现与点击、划屏、长按等一系列屏幕操作

  • 3. PC端键盘输入转换到手机软键盘输出,从而实现某些APP登录功能

  • 4. 直接从PC端安装已经下载好的APK文件,直接运行启动

  • 5. PC端可以搜索到当前wifi热点,同时能连接选择的wifi

  • 6. PC端显示收到的短信信息

  • 7. PC端软件控制手机拨打电话和接听来电(PC端支持实时来电提醒功能)


架构设计

分层设计


手机屏幕显示模块运行测试截图

这里写图片描述

连接层代码设计

  1. 手机USB连接电脑后通知应用层,创建连接链路
  2. 向控制层注册事件
    typedef struct android_usb_connection_s android_usb_connection_t;
    struct android_usb_connection_s
    {
    android_socket_t socket; // 虚拟套接字
    usb_snd_buffers *snd_buffer; // 控制层用户态发送缓冲区
    usb_rcv_buffers *rcv_buffer; // 控制层用户态接收缓冲区
    android_pool_t *pool; // 资源池对象,统一管理连接相关资源创建和释放
    android_log_t *log; // 全局日志对象
    android_process_handles handles; // process集合
    };

uint_t
register_contorl_event(android_usb_connection_t *conn);


控制层代码设计

  1. 接收用户的屏幕控制消息

ADB协议打包

  1. 修改ADB Server层代码,自定义信令逻辑
  2. 优化服务端逻辑代码,加入中继模式
  3. demon端协议封包层不变

细节方面我会分多篇文章进行介绍, 需要了解开发细节和demo的朋友可以私信我或者加微信。
微信二维码长这样
这里写图片描述

2 1
原创粉丝点击