“每次截图都是读取framebuffer再编码成png图片,接着将png图片先存到了SD卡上,然后socket是从SD卡上面读取的数据” 你可以把截图和上传数据分为两个线程来处理,一个线程负责截图一个线程负责上传,那么整个工作流程就会比较顺畅,而不会出现互等的状态。  或者用handler的方式在SD卡上生成了该图后通知程式去上传。

解决方案 »

  1.   

    请问LZ,LZ的这种方法可以截到别的activity的页面吗?或者设备未启动任何程序时,截到桌面内容。。
      

  2.   

    你看我的代码啊~~~我是直接放到service里面的在后台截图的
      

  3.   

    我这上面代码是用的两个线程,不过使用的是线程同步的方法,但是比较java不是非常熟练,怕有的地方写的不对,求高手指点~~~~@_@
      

  4.   

    试试asynctask,发送和截图分开进行,
      

  5.   

    额,我之前测试过,貌似是得不到当前activity,的view。。so,以失败告终。。你的已经能成功获得到图片了嘛。。
      

  6.   

    能分享一下读取framebuffer编码成png图片的源码吗 我用view.getDrawingCache();截屏Videoview的屏幕  但是截出来是黑屏
      

  7.   

    楼上的,你看到同名就认为是同一个?!
    class A
    {
    private int a;
    public A(int a)
    {
    this.a = a;
    }

    public void getInt()
    {
    System.out.printf("%d\n",a);
    }
    }class B
    {
    private int a;
    public B(int a)
    {
    this.a = a;
    }

    public void getInt()
    {
    System.out.printf("%d\n",a);
    }
    }你自己测试吧!两个类中的成员,是不是在同一个地址上!他只是最基本的问题- -,对getInputStream和getOutputStream获得的数据没有使用缓冲!
    想都知道,没缓冲是个什么效果了!
      

  8.   

    我有点奇怪,你既然已经是读framebuffer的数据了,为什么不直接把读出来的stream发出去,让服务器处理好了啊,在本地存成png,在去读不浪费时间吗
      

  9.   

    现在对直接处理底层的stream还不是很懂的,想试试先存在手机内存,发出去的效果的@_@.....弱弱的问下android可以直接读到底层缓冲的stream吗?我现在是编译成的可执行文件的~~~~
      

  10.   

    请问LZ startShot(); 方法具体实现了什么呢。
      

  11.   

    楼主,我最近也在做截屏,纠结了一周多了,能否把framebuffer截屏的代码给我发一份,谢谢! 。
      

  12.   

    同上 求截图代码[email protected]
      

  13.   

    跪求截图代码   [email protected]
      

  14.   

    楼主还在不在,求源码,[email protected]
      

  15.   

    求截图部分源码:[email protected]
    多谢~
      

  16.   

    大姐大,求截图部分源码:[email protected]
      

  17.   

    楼主威武,能发我一下你实现的获取framebuffer中的内容并转换成图片的代码吗,[email protected]
      

  18.   

    我也在截屏 - -!
    1.service截图如果用View.getDrawingCache(); 如何取得当前屏的View?
    2.网上还说DDMS的方式,是不是那些手机助手用的这种方式?什么样的思路或者调哪些接口有没有人研究的
    3.读framebuffer延时一帧貌似要100多ms,有没有谁更快的,或者其他的方式截屏
    楼主tcp传输的话,上传速度有多少?接收端有几秒的延时?
      

  19.   

    楼主,我目前也在做截屏,拿不准用哪种方法做,看到楼主的贴,觉得很靠谱,可否发我一下你实现截图的代码学习一下,[email protected]。真心谢谢啦~
    PS:楼主你实现的是全屏截图还是区域截图?
        
      

  20.   

    美女,我也在做这个,问下,你截屏将图片保存为PNG格式,颜色失真么,我保存下来了,颜色失真,求解,代码如下,麻烦帮我看下
       InputStream stream = getInputStream();
       DataInputStream dStream = new DataInputStream(stream);
       dStream.readFully(btmap);
     /*  for (int i = 0; i < btmap.length; i++) {
    System.out.println("----------->"+btmap[i]);
    }*/
     int[] tmpColor = new int[with*height];
     
     int tmpint;
    // int r,g,b;
     for(int j=0; j<with*height;j++){
     tmpint = 0;
     tmpint = btmap[j*2+0]+btmap[j*2+1]*256;
    int r = tmpint>>11;
                 r=(r<<3)|(r>>2);  
     int g = (tmpint >> 5)&63;
       g=(g<<2)|(g>>4);
     int  b = tmpint&31;
     b=(b<<3)|(b>>2);
    // tmpColor[j] = (r << 16) | (g << 8) |b | (0xff000000);
     tmpColor[j] = 0xff000000 | (r<< 16) | (g<< 8) | b;
      
    // System.out.println(tmpColor);
     
     
     }
    //System.out.println(stream.toString());

    //System.out.println("-------------->"+dStream);

     Bitmap bitmap = Bitmap.createBitmap(tmpColor, with, height, Bitmap.Config.RGB_565);
     FileOutputStream out = new FileOutputStream("/sdcard/test.png");
     boolean a=bitmap.compress(Bitmap.CompressFormat.PNG, 100,out);
      

  21.   

    求一个源码参照一下,[email protected],本人问题是在4.2.2系统1080P的屏幕设备上截出来的图片是黑屏的,不知道是什么原因
      

  22.   

    可以参考https://github.com/oNaiPs/droid-VNC-server
      

  23.   

    楼主延时问题解决了没?[email protected]谢谢
      

  24.   

    这么多问截图的呀
    这里有个 
    http://download.csdn.net/detail/tangcheng_ok/4390845
      

  25.   

    你的截图需要root 权限吗?
      

  26.   

    我是系统截屏,测试了一下,一秒可以接的40张左右,速度可以,但是文件有700K左右每张,一秒的数据惊人,所以我在传输前进行了图像压缩,传压缩文件,因为我是手机件的无线屏享,所以对图像要求不太高,于是我做了质量压缩,数据量大大减少,传输估计不是问题,我无线数据模块还没有做出来,这是我的毕业设计,刚上手两个月,有什么说法不专业,建议不成熟的地方请指教,我的QQ877025205,多交流,在数据的套接字传输这一块希望不吝赐教。
      

  27.   

    不知露珠问题解决没有,我现在也在做类似功能,求代码参考,[email protected]
      

  28.   

    楼主,求读取framebuffer编码成png图片源码,[email protected],谢谢
      

  29.   

    我想做一个屏幕共享的功能,求指教  ,跪求源码参考[email protected]