使用 Java 代码在 Android 上捕获屏幕截图 [重复]

Posted

技术标签:

【中文标题】使用 Java 代码在 Android 上捕获屏幕截图 [重复]【英文标题】:Capture Screen shot on Android using Java code [duplicate] 【发布时间】:2012-07-10 22:32:20 【问题描述】:

可能重复:Screenshot android

我想以编程方式截取屏幕截图(不是我的视图的屏幕截图),并创建了一个应用程序来截取我的视图的屏幕截图。

我正在尝试使用 Java 代码捕获设备屏幕截图(例如,如果用户打开了任何图像文件)(我想创建服务并从服务中我们可以拍照,但我不知道如何实现这一点)。

我发现了一些使用帧缓冲区 fb0 的本机代码,但我对此非常了解,不知道如何使用它。

【问题讨论】:

设备应该如何处理这个截图?不是所有安卓手机都内置了截图功能吗?如果是这样,这是否广播了某种意图?如果是这样,您是否可以不只是使用电话功能并等待广播的意图? 没关系,我只是查了一下,它没有广播意图。 code.google.com/p/android-screenshot-library/wiki/Usage 试试看这里可能会有所帮助。 只要你不把它用于狡猾的事情...... 【参考方案1】:

这里是截取屏幕截图并将其写入 sd 卡的解决方案

设置你的根布局:

View content = findViewById(R.id.layoutroot);
content.setDrawingCacheEnabled(true);

获取渲染视图的函数:

private void getScreen()

    View content = findViewById(R.id.layoutroot);
    Bitmap bitmap = content.getDrawingCache();
    File file = new File( Environment.getExternalStorageDirectory() + "/test.png");
    try 
    
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
     
    catch (Exception e) 
    
        e.printStackTrace();
    

记得添加

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

到您的 AndroidManifest。

【讨论】:

您好,感谢您的回复!我想捕获设备屏幕而不是我的活动,想法是如果用户打开任何图像文件并按下菜单按钮,那么我想捕获屏幕! 是的,我理解你。为此,您必须获取屏幕的根布局。获取活动的根布局。 能否请您将代码粘贴给我以获取根布局,但我仍然怀疑如果我的活动启动并获取根布局意味着它将获得后台窗口屏幕而不是我当前的活动屏幕?很抱歉问他的疑问! @Srini 查看此链接***.com/questions/4486034/…

以上是关于使用 Java 代码在 Android 上捕获屏幕截图 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

android上的设备特定屏幕捕获

求助个android 5.0+的捕获屏幕的问题

捕获 Google Map Android API V2 的屏幕截图

捕获 Google Map Android API V2 的屏幕截图

Java 屏幕捕获应用程序 - 如何?

如何捕获android设备屏幕内容? [复制]