package com.function;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter; import com.sql.Tools_Sql;
/*
* adb 命令方法集合类
*/
public class Tools_AdbCommand {
/*
* 拍照实现方法
*/
public void taking_pictures() {
try {
Process process = Runtime.getRuntime().exec("cmd /c adb shell input keyevent 27");
Thread.sleep(3000);
process.destroy();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 对焦实现方法
*/
public void focusing() {
try {
Process process = Runtime.getRuntime().exec("cmd /c adb shell input keyevent 80");
Thread.sleep(2000);
process.destroy();
}catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
/*
* 删除手机照片文件方法
*/
public void deletecamerafile() {
try {
Process process = Runtime.getRuntime().exec("adb shell");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
process.getOutputStream().write("cd /mnt/sdcard/DCIM/\r\n".getBytes());
process.getOutputStream().write("rm -r Camera/ \r\n".getBytes());
process.getOutputStream().flush(); //刷新流
Thread.sleep(2000);
input.close();
process.destroy();
System.out.println("手机中的照片清除完毕...");
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/*
* pull照片的 方法
*/
public void pullphoto(String path,String Storage_place) {
get_photo_name(Storage_place);
Process process2 ;
try {
if(Storage_place == "contrast_photo") {
process2 = Runtime.getRuntime().exec("cmd /c adb pull /mnt/sdcard/DCIM/Camera/"+new Tools_Sql().getcontrast_photo_name()+" "+path);
Thread.sleep(3000);
process2.destroy();
}else if (Storage_place=="test_photo") {
process2 = Runtime.getRuntime().exec("cmd /c adb pull /mnt/sdcard/DCIM/Camera/"+new Tools_Sql().getTest_photo_name()+" "+path);
Thread.sleep(3000);
process2.destroy();
}else if (Storage_place == "error_photo") {
process2 = Runtime.getRuntime().exec("cmd /c adb pull /mnt/sdcard/DCIM/Camera/"+new Tools_Sql().getTest_photo_name()+" "+path);
Thread.sleep(3000);
process2.destroy(); }
System.out.println("照片从手机上下载完成...."); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
/*
* 得到当前测试照片名称的方法
*/
public void get_photo_name(String Storage_place) {
try {
Process process = Runtime.getRuntime().exec("adb shell");
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
process.getOutputStream().write("cd /mnt/sdcard/DCIM/Camera/\r\n".getBytes());
process.getOutputStream().write("ls\r\n".getBytes());
process.getOutputStream().flush();
String s = input.readLine();
if(Storage_place == "contrast_photo" ) {
new Tools_Sql().setcontrast_photo_name(s);
System.out.println("照片名称是:"+new Tools_Sql().getcontrast_photo_name());
}else if (Storage_place == "test_photo") {
new Tools_Sql().setTest_photo_name(s);
System.out.println("照片名称是:"+new Tools_Sql().getTest_photo_name());
}else if (Storage_place == "error_photo") {
new Tools_Sql().setTest_photo_name(s);
System.out.println("照片名称是:"+new Tools_Sql().getTest_photo_name()); } input.close();
process.destroy(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
 

用Java实现adb命令的各种方式的更多相关文章

  1. Java调用Linux命令执行

    调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...

  2. 『与善仁』Appium基础 — 4、常用ADB命令(一)

    目录 1.启动和关闭ADB服务 2.查看ADB版本 3.指定adb server的网络端口 4.查询已连接设备/模拟器 5.获取安卓系统版本 6.为命令指定目标设备 7.发送文件到手机 8.从手机拉取 ...

  3. adb命令具体解释(二)——手机缺失sqlite3时操作数据库的多种解决方式

    在android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 以下我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方式 ...

  4. Android的常用adb命令

    第一部分:1. ubuntu下配置环境anroid变量:在终端执行 sudo gedit /etc/profile 打开文本编辑器,在最后追加#setandroid environment2. 运行E ...

  5. Android adb 命令使用总结

    adb原理 参考文档 How ADB works        http://www.cnblogs.com/ifantastic/p/5186362.html http://blog.csdn.ne ...

  6. Android 常用 adb 命令总结

    Android 常用 adb 命令总结 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命 ...

  7. Android adb 命令图解

    做了这么长时间的开发与管理,在命令上总是自见则过,往往却忽视了在其命令上的分享过程,所以现在稍微有点时间就把 其命令的相关操作来简单的扫盲一番吧,也系统通过这种方式去授之以渔而不是鱼,好了,我以图解的 ...

  8. 【转】Android 常用 adb 命令总结

    原文地址:http://testerhome.com/topics/2565 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Andr ...

  9. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

随机推荐

  1. go bytes缓冲区使用介绍 -转自https://www.cnblogs.com/--xiaoyao--/p/5122138.html

    缓冲区原理简介: go字节缓冲区底层以字节切片做存储,切片存在长度len与容量cap, 缓冲区写从长度len的位置开始写,当len>cap时,会自动扩容.缓冲区读会从内置标记off位置开始读(o ...

  2. XML 增、删、改

    作为一个小型的数据存储传递的工具——XML,大家肯定也不陌生,今天就关于XML的一些简单操作做些总结. 这些都是在控制台进行操作的····· 1.创建XML 1)创建普通XML static void ...

  3. LDO与DC-DC

    LDO的功耗可能较低,在430中如果用3.7v锂电池供电,最好用LDO DC-DC功耗较高 其它的区别不大

  4. html框内文字垂直居中的方法

    由于无法知道框内文字的高度,很难确定垂直空间的位置.vertical-align:middle仅对td元素有效,无论单行和多行均可实现垂直居中.

  5. springboot springcloud 热部署

    本文转载自:https://www.cnblogs.com/moly/p/7978303.html 可以在配置修改某些文件重启,建议配置一个控制文件,只有此文件修改才会重启. 1. pom中添加: & ...

  6. Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向 (四十三)

    不多说,直接上干货! hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集 ...

  7. 《Java并发编程实战》笔记-Happens-Before规则

    Happens-Before规则 程序顺序规则.如果程序中操作A在操作B之前,那么在线程中A操作将在B操作之前执行. 监视器锁规则.在监视器锁上的解锁操作必须在同一个监视器锁上的加锁操作之前执行. v ...

  8. appium 启动了2个端口,但是只有一台机器在跑的 问题解决 (还没试,记录在此)

    appium启动了2个,端口分别设置为了4723 4725, 在测试类中也分别指定了设备和端口,用device来指定.然而每次都是运行一个设备. 后来添加了udid这个来指定才发现可以.deviceN ...

  9. Java-Runoob-高级教程-实例-时间处理:04. Java 实例 - 时间戳转换成时间

    ylbtech-Java-Runoob-高级教程-实例-时间处理:04. Java 实例 - 时间戳转换成时间 1.返回顶部 1. Java 实例 - 时间戳转换成时间  Java 实例 以下实例演示 ...

  10. locked (a oracle.jdbc.driver.T4CConnection

    发现写Oracle的线程挂住了,场景是从mysql读数据,然后写到Oracle.   1 定位线程 因为在同一台机器上运行了多个java进程,要找到对应的pid,就是连接mysql的的那个进程.   ...