1. 流程细节

  1. 判断是否连上了usb
    1. 如果是,此为[usb连接模式]
      1. 获取ip地址
      2. 保存ip地址
      3. 设置默认端口
      4. 开始投屏
      5. 判断是否投屏过程中设备拔掉usb
        1. 如果是
          1. 跳转到[无线连接模式]
        2. 如果否
          1. 保持连接
    2. 如果否,此为[无线连接模式]
      1. 检查是否有默认ip地址
        1. 如果没有,此为[配置新ip和端口]
          1. 要求输入IP地址和端口
          2. 判断是否能连接上
            1. 如果能连上
              1. 保存ip地址
              2. 设置监听端口
              3. 断开连接
              4. 跳转到[无线连接模式]
            2. 如果连不上 mark
              1. 输出提示: 将使用usb模式 ,如果仍想尝试用无线连接,请重开程序
              2. 判断usb插入,此为[usb等待循环]
                1. 如果没有插入
                  1. 跳转到[usb等待循环]
                2. 如果插入
                  1. 跳转到[usb模式]
        2. 如果有
          1. 使用默认配置连接
          2. 判断是否能连接上
            1. 如果是
              1. 开始投屏
            2. 如果否
              1. 跳转到[配置新ip和端口]

2. 流程大纲

  1. 提供两种方法连接,默认是先usb连接再无线连接
    1. 无线连接
      1. 提供三种无线连接方式
        1. 用默认配置连接
        2. 使用新配置来重设默认配置,再用默认配置连接
        3. 使用usb来重设默认配置,再用默认配置连接
    2. usb连接
      1. 悄悄重设默认配置
      2. 使用usb直连
  2. 连接成功后,直接开始投屏

3. 源码

@echo off
adb kill-server
adb tcpip 5555 2>&1 | findstr "restarting" >nul
if errorlevel 1 (
   call :WIFImode
) else (
   call :USBmode
)
exit /b %errorlevel%
 
:USBmode
setlocal enabledelayedexpansion
choice /n /t 2 /d y >nul
echo USBmode launch!
for /f "usebackq tokens=3 delims=: " a>ip.txt
   echo ip=a in ("!ip_port!") do (
      echo getip= a>ip.txt
   )
   adb tcpip 5555
   adb kill-server
   call :WIFImode
)
endlocal
exit /b 0

4. bug

  1. USBmod模块中adb adb shell ifconfig wlan0 预设结果应该是这样,但是实际有所偏差,具体不知道
wlan0     Link encap:UNSPEC   Driver wlan
          inet addr:192.168.1.4Bcast:192.168.1.255 Mask:255.255.255.0
          inet6 addr: fe80: :4ad :41a2:16df :f390/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric: 1
          RX packets : 64882 errors:0 dropped:0 overruns:0 frame:0
          Tx packets :54818 errors:2 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen : 3000
          RX bytes: 60754574 TX bytes: 7996326