我想开发一个应用程序,可以对Android屏幕进行截屏。有人知道如何做吗? 这类似于koushik duttas的截屏,但不需要root权限。 有人有正在运行的koushik dutta屏幕截图应用程序吗? 它对我来说无法工作,请告诉我,谢谢。
我想开发一个应用程序,可以对Android屏幕进行截屏。有人知道如何做吗? 这类似于koushik duttas的截屏,但不需要root权限。 有人有正在运行的koushik dutta屏幕截图应用程序吗? 它对我来说无法工作,请告诉我,谢谢。
假设你点击了一个按钮:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
}
});
之后您需要这两种方法:
public Bitmap takeScreenshot() {
View rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
return rootView.getDrawingCache();
}
public void saveBitmap(Bitmap bitmap) {
File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
private RelativeLayout view;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (RelativeLayout)findViewById(R.id.relativeView);
View v1 = view.getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bm = v1.getDrawingCache();
}
方法 view.getDrawingCache() 首先尝试检索其先前缓存的图像。如果你想保证你的屏幕截图是最新的,这可能会导致问题。例如,如果用户单击了屏幕截图按钮,然后更改了 UI,然后再次单击它,则第二个屏幕截图将与第一个相同,除非你清除缓存。我发现以下方法更方便:
public Bitmap takeScreenshot() {
View rootView = findViewById(android.R.id.content).getRootView();
Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
rootView.draw(canvas);
return bitmap;
}
我认为没有root或SDK是不可能的,抱歉。
我很乐意被证明是错误的。
虽然不是一个应用程序,但如果您有USB电缆,您可以在PC上安装Android SDK并使用androidscreencast从PC上截屏,而无需对手机进行root。