android屏幕捕捉

这篇博客介绍了如何在Android平台上实现屏幕捕捉功能,通过实例化视频录制管理器来完成屏幕的录制操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用MediaprojectionManager 的方法来进行屏幕捕捉,VirtualDisplay来展示捕捉的屏幕截图,关键代码为:

实例化视频放映管理器

projectionManager = (MediaProjectionManager) getSystemService(
        Context.MEDIA_PROJECTION_SERVICE);
通过startActivityForResult开始捕捉屏幕
Intent intent = projectionManager.createScreenCaptureIntent();
startActivityForResult(intent,CAPTURE_CODE);

//  在onActivityResult中对传来的捕捉屏幕数据进行展示
     projection = projectionManager.getMediaProjection(resultCode,data);
            virtualDisplay = projection.createVirtualDisplay("屏幕捕捉",displayWidth,displayHeight, screenDensity,
                    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,surface, null,null);

具体代码如下:

public class ScreenCapture extends Activity implements View.OnClickListener{
    //   定义屏幕捕获的请求码
    private static final int CAPTURE_CODE = 0x123;
    private MediaProjectionManager projectionManager;
    private int screenDensity;
    private int displayWidth = 500;
    private int displayHeight = 670;
    private Surface surface;
    private SurfaceView surfaceView;
    private ToggleButton capture;
    private boolean isSharing = false;
    private MediaProjection projection;
    private VirtualDisplay virtualDisplay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen_capture);
        surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        capture = (ToggleButton) findViewById(R.id.capture);
        surface = surfaceView.getHolder().getSurface();
        //  获取屏幕分辨率
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        screenDensity = metrics.densityDpi;
        //  控制SurfaceView组件的宽高
        ViewGroup.LayoutParams lp = surfaceView.getLayoutParams();
        lp.width = displayWidth;
        lp.height = displayHeight;
        surfaceView.setLayoutParams(lp);
        projectionManager = (MediaProjectionManager) getSystemService(
                Context.MEDIA_PROJECTION_SERVICE);
        capture.setOnClickListener(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(projection != null){
            projection.stop();
            projection = null;
        }
    }

    @Override
    public void onClick(View v) {
        if(((ToggleButton)v).isChecked()){
            shareScreen();
        }else{
            stopScreenSharing();
        }
    }
    //
    private void shareScreen(){
        isSharing = true;
        if(surface == null)
            return;
        if(projection == null){
            Intent intent = projectionManager.createScreenCaptureIntent();
            startActivityForResult(intent,CAPTURE_CODE);
            return;
        }
    }

    private void stopScreenSharing(){
        isSharing = false;
        if(virtualDisplay == null){
            return;
        }
        virtualDisplay.release();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == CAPTURE_CODE){
            //  若用户取消了屏幕捕捉
            if(resultCode != RESULT_OK){
                Toast.makeText(ScreenCapture.this, "用户取消屏幕捕捉", Toast.LENGTH_SHORT).show();
            }
            projection = projectionManager.getMediaProjection(resultCode,data);
            virtualDisplay = projection.createVirtualDisplay("屏幕捕捉",displayWidth,
                    displayHeight, screenDensity,
                    DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,surface, null,null);
        }
    }

}



一、软件简介 FastStone Capture 是一款出色的屏幕捕捉(截图)软件,它集图像捕捉、浏览、编辑、视频录制等功能于一身,功能完善、使用方便,值得推荐! 软件提供多种捕捉方式(如:活动窗口、指定窗口/对象、矩形区域、手绘区域、整个屏幕、滚动窗口等),提供屏幕录像机、放大镜、拾取颜色、标尺等辅助功能,支持快捷键操作 对于捕捉到的图像,软件提供了多种处理方式,如:在编辑器打开;存入剪贴板或文件;发送到打印机、邮件、WORD、Powerpoint 甚至是网络 FTP 等。用户还可以通过文件名称模板定制文件名以自动保存捕捉内容,支持BMP、GIF、JPG、PNG、TIF、PDF等文件格式,输出文件夹位置也可以自行设定。 软件内置功能完善的图像编辑器,支持几乎所有主流图片格式,除提供缩放、旋转、剪切、格式转换、调整大小等基本功能外,还可向图像中加入标题、边框和水印、文本、线条、图形等内容,并可调整图像颜色,进行多种特效处理。 二、版本特色 本版本基于官方英文原版汉化,集成注册文件,并优化了部分设置。相对于其他版本,具有更新及时、汉化彻底、使用方便等特点。希望大家喜欢! 三 、特别声明: 1、本软件相关资源收集自互联网,版权归其开发厂商及作者所有。 2、本软件仅限于个人学习交流,请勿用于任何形式商业用途。 3、您必须自行承担使用过程所有可能引起的后果及损失。 4、使用过程中若有意见或建议,请及时反馈和指正。 软件名称:FastStone Capture 产品版本:8.4 官方主页:http://www.faststone.org 软件汉化:飞扬时空 博客地址:http://iyoung.blog.163.com/blog/static/16678880720106161648206/ 版本性质:汉化版 更新日期:2016年1月16日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值