Android 请问如何实现截屏功能? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
pcatzj

Android 请问如何实现截屏功能?

  •  
  •   pcatzj Nov 26, 2016 13466 views
    This topic created in 3438 days ago, the information mentioned may be changed or developed.

    View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); view.getDrawingCache();

    我本来时通过这种简单的方法来获取应用截图,但是现在发现一个问题,就是这个方法截取不了程序中的 PopupWindow ,所以请问还有什么截图的方法吗?我可以调用系统的截图吗?如果可以,那要怎么操作呢?

    18 replies    2016-11-28 14:41:08 +08:00
    q397064399
        1
    q397064399  
       Nov 26, 2016
    读写 linux 的 /dev/下的图形设备 网上有,貌似需要 ADK
    q397064399
        3
    q397064399  
       Nov 26, 2016
    不用 ADK 搞错了,很多年前,玩安卓的时候 收藏的,
    busymilk
        4
    busymilk  
       Nov 26, 2016
    直接用 view 的 draw ,传进一个 canvas ,就行了
    q397064399
        5
    q397064399  
       Nov 26, 2016
    上 github 找个成熟的,只要是用 /dev/下设备读的 就是全屏截图
    Cabana
        6
    Cabana  
       Nov 26, 2016
    6.0 以上 有个新的录屏 api 可以用,不用 root
    pcatzj
        7
    pcatzj  
    OP
       Nov 26, 2016
    @busymilk 关键这个 view 怎么获得呢, decorView 不包括 PopupWindow 啊
    pcatzj
        8
    pcatzj  
    OP
       Nov 26, 2016
    @Cabana 那 6.0 以下的能兼容吗
    srx1982
        9
    srx1982  
       Nov 26, 2016
    @pcatzj 显然不能
    pcatzj
        10
    pcatzj  
    OP
       Nov 26, 2016
    @srx1982 那没办法, 6.0 起步太高了,只能再找别的办法了
    Jabin
        11
    Jabin  
       Nov 26, 2016
    @pcatzj 是 5.0 不是 6.0. meidaprojection
    GhostFlying
        12
    GhostFlying  
       Nov 26, 2016
    popup window 的 view 还不是你自己的。。一样可以 draw 啊,读取 /dev 下的确可行,实际上系统的截图也是这么实现的(严格来说系统调用的某个命令是这么实现的),但估计需要 root 权限。

    MediaProjection API 是好东西, 5.0 可用,但是提醒下,这个 API 使用需要用户显式弹窗授权,以及默认情况下每次都要重新授权。
    pcatzj
        13
    pcatzj  
    OP
       Nov 26, 2016
    @Jabin 对,我看到了,但是 5.0 之下要怎么处理啊
    pcatzj
        14
    pcatzj  
    OP
       Nov 26, 2016
    @GhostFlying 难道我还在每个 activity 里面把 popupWindow 合并进去?那我不是要在每个 activity 里面写一套?
    GhostFlying
        15
    GhostFlying  
       Nov 26, 2016
    @pcatzj 你不能 act draw 到 canvas 上,然后 popup window 再 draw 覆盖上去么。。
    pcatzj
        16
    pcatzj  
    OP
       Nov 26, 2016
    @GhostFlying 关键是要怎么获取界面的 popupWindow 或者 dialog 呢?不是一个界面的截屏,是整个 app 的截屏
    Jabin
        17
    Jabin  
       Nov 28, 2016
    @pcatzj 5.0 下就没必要了,市场份额很小了,就不支持了,实在要支持的话,也只能支持已 root 用户
    pcatzj
        18
    pcatzj  
    OP
       Nov 28, 2016
    @Jabin 且不管 5.0 以下的份额是不是真的很小。因为说了这是个内部应用,员工的手机都是公司发的,很多还是几年前的, 5.0 以下有很多
    About     Help     Advertise     Blog     API     FAQ     Solana     3625 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 04:36 PVG 12:36 LAX 21:36 JFK 00:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86