解决方案 »

  1.   

    难道跟camera有关吗?求大神帮帮忙
      

  2.   

    不是黑的  是报空处理了  if (mScreenBitmap == null) {
                notifyScreenshotError(mContext, mNotificationManager);
                finisher.run();
                return;
            }
      

  3.   

    打开camera的情况下,刷屏的控制权已经不经过surface了?
      

  4.   

    QQ视频通话中能截图,Log中跟到mScreenBitmap = Surface.screenshot((int) dims[0], (int) dims[1]);
    mScreenBitmap的值非NULL,不知这和Camera之间差别在那?
      

  5.   

    问题找到了。从出现问题的doScreenshot函数里慢慢添加LOG跟踪,最终会跟到SurfaceFlinger.cpp文件的SurfaceFlinger::captureScreen里,注意到:
     // if we have secure windows, never allow the screen capture
                if (flinger->mSecureFrameBuffer)
                   return true;
                result = flinger->captureScreenImplLocked(dpy,
                        heap, w, h, f, sw, sh, minLayerZ, maxLayerZ);

    Camera打开时,flinger->mSecureFrameBuffer为true,直接return也就不截图了。Camera打开时系统会当成secure windows,请问secure windows啥意思?怎么理解呢?
      

  6.   

    我的问题也解决了,在camera里ActivityBase.java里 onCreate的时候getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);去掉就可以啦。
    似乎跟你说的问题是有联系的。
      

  7.   

    为什么我没有打开camera也显示null
      

  8.   

    请问楼主   我最近也在做截图功能  我写好的是在root权限下实现的截图,无root权限下的不知道怎么做  网上说的我试的 好像Surface.screenshot  报错  不知道怎么弄了    能发一份源码吗参考吗?  求抱大腿啊