我正在尝试为 android 构建一个自定义启动器,该启动器需要在用户按下主页按钮后立即截取设备的屏幕截图,因此在我的应用程序(启动器)返回前台之前。这个想法几乎是在我的启动器/活动/应用程序接管屏幕之前截取设备显示的任何内容。
我知道这样的事情需要root访问权限,但这不是问题。谁能教我怎么截图?一些示例代码?网上有教程吗?我在网上查过,但找不到任何有用的东西。我正在尝试简单地截取屏幕截图,就像 Android 市场上已经使用 root 访问权限的大量应用程序一样。提前致谢 :-)
我正在尝试为 android 构建一个自定义启动器,该启动器需要在用户按下主页按钮后立即截取设备的屏幕截图,因此在我的应用程序(启动器)返回前台之前。这个想法几乎是在我的启动器/活动/应用程序接管屏幕之前截取设备显示的任何内容。
我知道这样的事情需要root访问权限,但这不是问题。谁能教我怎么截图?一些示例代码?网上有教程吗?我在网上查过,但找不到任何有用的东西。我正在尝试简单地截取屏幕截图,就像 Android 市场上已经使用 root 访问权限的大量应用程序一样。提前致谢 :-)
这是一个安全漏洞。你应该有一个根设备才能做到这一点。
您可以将此代码与您自己的应用程序一起使用:(我从另一个问题的答案中获得了此代码:https ://stackoverflow.com/a/5651242/237838 )
// image naming and path to include sd card appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + ACCUWX.IMAGE_APPEND;
// create bitmap screen capture
Bitmap bitmap;
View v1 = mCurrentUrlMask.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
OutputStream fout = null;
imageFile = new File(mPath);
try {
fout = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
fout.flush();
fout.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
尝试查看此代码以获取更多帮助:
PS可以使用 DDMS 从 Android 截取屏幕截图,但这是另一回事。
PPS如果你想在它下面的活动上透明地绘制你的启动器,你需要将像素格式设置为 RGBA(仅处理 OpenGL)并相应地渲染。您无需截取底层活动的屏幕截图即可执行此操作。
有根设备:在有根设备上使用此代码:
process = Runtime.getRuntime().exec("su -c cat /dev/graphics/fb0");
InputStream is = process.getInputStream();