申请会员ID:用一句话描述
1. 申 请 I D:用一句话描述2. 个人邮箱:764010928@qq.com
3. 原创技术文章:
### 说明
我是一名Android开发,因为工作上需要远程调试不同的Android盒子,盒子的IP地址又经常变更,所以开发了一款可以扫码局域网内可以远程调试的设备,能够进行连接断开的软件,连接之后就可以通过命令行使用各种Android ADB命令了。
### 实现原理
1. 通过循环ping 局域网的IP得到所有在线的设备ip,方法具体实现如下:
```java
public static void startSeach(final OnSeachListener listener, final String port) {
count = 0;
listeners = listener;
for (int i = 1; i <= 255; i++) {
final int finalI = i;
executorService.execute(new Runnable() {
@Override
public void run() {
String ret = execCMD("ping 192.168." + port + "." + finalI + " -w 100 -n 1");
if (ret.indexOf("来自") >= 0 && isHostConnectable("192.168.80." + finalI, 5555)) {
Platform.runLater(new Runnable() {
@Override
public void run() {
listener.onSeach("192.168.80." + finalI);
}
});
}
countUp();
}
});
}
executorService.execute(new Runnable() {
@Override
public void run() {
while (true) {
if (count >= 255) {
Platform.runLater(new Runnable() {
@Override
public void run() {
listener.onEnd();
}
});
break;
}
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
```
2. 通过循环判断每个在线设备的IP的端口5555 是否开放来判断是否可以ADB远程调试,判断方法如下:
```java
public static boolean isHostConnectable(String host, int port) {
Socket socket = new Socket();
try {
socket.setSoTimeout(100);
socket.connect(new InetSocketAddress(host, port));
} catch (Exception e) {
return false;
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return true;
}
```
3. 如设备的5555端口是打开状态,那么就可以执行ADB连接,或者断开。
差不多就这样,不知道为何程序截图一直上传不上来,程序 源码和截图上传到百度云了:
https://pan.baidu.com/s/1pMbdFwZ
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
ps:过程太简单了,不足以达到申请要求,可以跟帖更多技术内容申请。
页:
[1]