• @shixue33 用 adb 去截图不太好用,得到的截图文件大小为 0,执行 screencap 命令后得到的输出流为空

  • 好棒的帖子,学习!!

  • @shixue33 多谢!! 看到有人说用 adb 去实现, 后续再试下

  • @lihuazhang @monkey 多谢!!另 截图只能这样了吗 ? 有没有好的解决办法没

  • @caikaibai 多谢指点。这个我也试过,让它等待一段时间,但是加个等待之后一闪而过,打出的日志显示 swipe 操作是失败的,报错信息就是上面贴出来的东西,所以我想是哪个地方出错了,但是也搞不明白

  • @eurekasaber 说的对, 这个坐标应该是某次我把坐标改错了

  • @testly driver.swipe(x/43, y/10*i, x/4*2, y/10*i, 0); 这行代码我也试过了,还是跟帖子里面的异常一样
    不过调试的时候倒是可以滑动,但是执行完 swipe 后一样抛出异常

  • 支持一下下, qq:410933185

  • 对于 best1196 提出的这个问题,还是自己来解答下。
    代码里需要添加 InputStream is = process.getErrorStream(); // 获取错误输出流
    由于错误输出流一直没有被清空导致程序被阻塞,添加这行代码之后错误输出流就被清空了,当然就不会被阻塞了。
    详细的内容可参考 http://249wangmang.blog.163.com/blog/static/52630765201261334351635/
    多谢大神 @testly 不吝赐教,:D

  • #30 楼 @testly 本来想完全自动化的,不过被那个问题卡住了,现在的思路:先手动执行下那个命令,把他重定向到文件里,然后在读文件,这样就好处理了

  • hi,大神
    我在尝试着用 adb shell top -d 1 | grep + packagename 命令去读取特定 app 的 cpu 使用率。大致的想法是这样的:通过这条命令,把所有的输出写到一个文件里,然后在汇总 cpu 占用的情况。
    代码是这样的:
    String path = "e:/cpu.txt";
    int i = 0;
    /*if(! haveDevices())
    {
    System.out.println("device not existing,please check ");
    return ;
    }
    */
    try
    {
    Runtime rt = Runtime.getRuntime();

    File myFilePath = new File(path);
    if (! myFilePath.exists())
    myFilePath.createNewFile();

    FileWriter file = new FileWriter(myFilePath,true);
    Process proc = rt.exec("adb shell top -d 1 | grep " + packagename ); //得到的 CPU 信息写到文件中
    try{

    if(proc.waitFor() != 0)
    {
    System.err.println("exit value = " + proc.exitValue()); //waitfor 返回值 0 正常结束
    }
    BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    String line;
    StringBuffer strBuff = new StringBuffer();
    while((line = reader.readLine()) != null)
    {
    //if(line != null)
    //file.write(line + "\n") ; //仅保存含包名的
    System.out.println(line);
    }
    }

    运行之后发现 cpu.txt 为空,应该是 reader 也为空,不知道是什么鬼