【问题标题】:Android - Take a "Screenshot" of an App Running in the BackgroundAndroid - 拍摄在后台运行的应用程序的“屏幕截图”
【发布时间】:2015-07-16 02:01:31
【问题描述】:

我已经阅读了很多关于应用程序在后台运行时对当前用户屏幕进行屏幕截图的问题,但还没有看到很多文章涉及应用程序在运行时对其自身进行“屏幕截图”在后台。

我希望无需以任何方式对手机进行 root 即可完成此操作,因为我希望每个人都可以使用我制作的应用程序(root 可能不涉及此解决方案,但只是把它扔在那里)。

应用程序的最终目标是让应用程序能够截取自身的屏幕截图并将该屏幕截图保存为用户的背景壁纸。我想添加其他几个功能,但我只想知道,这是否可能?如果是这样,任何人都可以向我展示一些启动代码或将我链接到一些吗?如果以前有人问过这个问题,请告诉我,否则,任何和所有的帮助都将受到赞赏。谢谢!

【问题讨论】:

  • 在后台运行时对其自身进行截图是什么意思? 如果它在后台运行,用户将看不到它。那你说的是什么截图?您的意思是在您的应用处于后台时截取当前状态下的手机屏幕截图吗?
  • 不完全。我想在后台拍摄应用程序本身的(所谓的)“屏幕截图”,而不是手机的当前状态。
  • 你说的所谓的“截图”是什么意思?
  • 我的意思是,当我在手机上的其他地方(在主屏幕上、查看电子邮件等)时,我想要一张应用程序当前状态的照片,让其自行拍摄。最终我想把这张照片存储为我的墙纸。 @Antrromet

标签: android screenshot wallpaper


【解决方案1】:

首先,我不确定我是否正确理解了您的要求。理想情况下,当应用程序处于后台时,其进入后台时的状态和在后台时的状态将保持不变。因此,当应用程序刚刚进入后台时,您可以截取应用程序的屏幕截图,这可以在您的活动的onPause() 中处理。

要为您的应用截取屏幕截图,请将整个布局放在 ViewGroup 中,然后使用以下代码。

    parentLayout = (RelativeLayout)findViewById(R.id.parentLayout);
    parentLayout.setDrawingCacheEnabled(true);
    parentLayout.buildDrawingCache();

而当你要截屏时,使用Bitmap获取截屏

    bitmap = parentLayout.getDrawingCache();

当应用程序进入后台时,上面的行应该在您的onPause() 中。或者您也可以在您的应用程序处于后台时触发它,并查看它是否被捕获。我不确定它在后一种情况下将如何工作。

【讨论】:

  • 感谢您的帮助。正如你所提到的,我希望应用程序主要在后台运行,所以如果是这样,当它已经在后台运行时,我将如何去做呢?我对服务有一些了解,但不确定在这种情况下您是否需要使用这些知识。
  • 但正如我所提到的,由于应用程序在后台时状态不会改变,因此您可以在应用程序进入后台时(onPause())截取屏幕截图(此时)。然后使用该图像作为壁纸。您不需要为此提供服务。
  • 但是如果应用状态发生变化怎么办?在那种情况下,我需要服务吗?
  • 你能举个例子吗?
  • 比如显示天气情况,然后适当更换手机壁纸,我该怎么做?
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
相关资源
最近更新 更多