android 6.0截屏的实现,android截屏实现

一、截取DecorView,但不能截取视频图片;

private Bitmap takeScreenShot(Activity activity) {

View view = activity.getWindow().getDecorView();

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

Rect frame = new Rect();

view.getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top;

int width = activity.getWindowManager().getDefaultDisplay().getWidth();

int height = activity.getWindowManager().getDefaultDisplay()

.getHeight();

Bitmap b = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width,

height - statusBarHeight);

view.destroyDrawingCache();

return b;

}

二、该命令读取系统的framebuffer,需要获得系统权限,否则只会生成0b的图:

(1). 在AndroidManifest.xml文件中添加

<

uses-permission

android:name

=

"android.permission.READ_FRAME_BUFFER"

/>

(2). 修改APK为系统权限,将APK放到源码中编译, 修改Android.mk

LOCAL_CERTIFICATE := platform

String cmd = "screencap -p /sdcard/screenshot.png";

Runtime runtime = Runtime.getRuntime();

try {

runtime.exec(cmd);

} catch (IOException e) {

e.printStackTrace();

} 可在控制台直接使用 adb shell screencap -p /sdcard/screenshot.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值