android 怎么获取当前屏幕的截图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么获取当前屏幕的截图相关的知识,希望对你有一定的参考价值。

安卓系统手机操作系统相似,以华为手机为例,以下截屏方法您可以试一下:
一、屏幕下拉出现“开关”,点击“截屏”即可截图成功(如默认快捷开关没有截屏选项,需要点击编辑添加后方能使用)。
二、“截图”快捷键:同时按住“音量减”和“电源键”也可以实现截图。
三、通过指关节截屏:
1、截取完整屏幕:亮屏状态下连续敲击屏幕两下待弹窗自动退出即可完成截屏。
2、截取部分屏幕:亮屏状态下连续敲击屏幕两下,弹窗出现三秒内点击编辑,拖拽图片边框即可完成截屏。
3、画字母S滚动截屏:先用指关节敲击一下屏幕,然后不要离开屏幕,直接用指关节画字母S,点击滚动区域后完成截屏。
截屏成功后,图片文件默认保存在手机存储的Pictures/Screenshots文件夹下,也可以通过手机自带的图库查看。
参考技术A 代码如下:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.os.Environment;
import android.util.Log;
import android.view.View;

public class ShotScreen
private static final String TAG="shotscreen";
@SuppressWarnings("unused")
private static Bitmap takeScreenShot(Activity activity)
View view =activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
Rect rect = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
System.out.println(statusBarHeight);

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

Bitmap bitmap2 = Bitmap.createBitmap(bitmap,0,statusBarHeight, width, height - statusBarHeight);
view.destroyDrawingCache();
return bitmap2;


@SuppressWarnings("unused")
private static void savePic(Bitmap bitmap,String filename)
FileOutputStream fileOutputStream = null;
try
fileOutputStream = new FileOutputStream(filename);
if (fileOutputStream != null)
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();


catch (FileNotFoundException e)
Log.d(TAG, "Exception:FileNotFoundException");
e.printStackTrace();

catch (IOException e)
Log.d(TAG, "IOException:IOException");
e.printStackTrace();



public static void shoot(Activity a)
if (android.os.Environment.MEDIA_MOUNTED != "mounted")
ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/sdcard/抽样.png");

else
ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/data/data/"+a.getPackageName()+"/抽样.png");




接着在main.xml中加入一个Button本回答被提问者采纳

android 视频截图

参考技术A 四个方案:

1.原生方法,MediaMetadataRetriever

mp4没问题,但对切片类不行

2.ffmpeg等第三方库

全支持,但集成比较麻烦,而且体积也比较大

3.通过MediaProjectionManager录制屏幕获取帧来截图

这个截的是全屏,如果需要去边缘之类的可以直接处理bitmap

相关可以参考: https://github.com/c2hw/screenshot

以上是关于android 怎么获取当前屏幕的截图的主要内容,如果未能解决你的问题,请参考以下文章

在当前的android片段中禁用屏幕截图[重复]

在屏幕截图中模糊矩形

Android Studio错误尝试获取屏幕截图:“从设备获取屏幕截图时出现意外错误:EOF”

如何以编程方式获取 android 设备屏幕截图? [复制]

Python + Appium 获取当前屏幕的截图方法的封装

android 视频截图