java中通过Adb判断PC是否连接了移动设备
最近用到PC端和移动端通过USB连接传输数据的方式,于是总在使用Adb命令,为了逻辑的严谨和代码容错,想在传输数据的之前,PC和移动端先建立一次会话,防止移动端还未连接就直接传输数据会报错,找了很久并未发现这类方法,于是自己在代码里面通过Adb实现了这个方法。供大家参考,欢迎大家有更好的实现方式多多交流。
直接上代码
/**
* @Description: 判断是否连接设备
* @Param: []
* @return: boolean
* @Author: Mengw9
*/
public static boolean isLinkDevices(){
String str = this.adbCmd("D:\adb\adb devices");
assert str != null;
str = str.replaceAll("List of devices attached", "").replaceAll("\n", "");
if (!str.isEmpty()){
System.out.println("已连接设备,设备名为:"+str);
return true;
}
System.out.println("未连接设备");
return false;
}
/**
* @Description: 执行cmd命令
* @Param: [cmd]
* @return: void
* @Author: Mengw9
*/
public static String adbCmd(String cmd){
Process process;
try {
process=Runtime.getRuntime().exec(cmd);
System.out.println(inputStream2String(process.getInputStream()));
return inputStream2String(process.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @Description: 返回流处理成字符串
* @Param: [inputStream]
* @return: java.lang.String
* @Author: Mengw9
*/
private static String inputStream2String(InputStream inputStream){
String result="";
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
try {
String temp="";
while ((temp=br.readLine())!=null){
result+=temp+"\n";
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
使用这个代码需要在本地下载有adb的驱动,我的是直接放在D盘
adb驱动分享一下 https://www.lanzous.com/b0bk4wlpe 密码: 8uz5
其他学习Adb命令链接:
作者:梦里梦外
--------------------------------------------------------------------------------------------------------------------
个性签名:以梦为马,驰骋岁月;以梦为马,诗酒趁年华!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个 “推荐” 哦,博主在此感谢!