1

我们需要找到一种在不使用任何外部软件的情况下捕获 Android 屏幕的方法,该方法可以在非 root 手机上运行。

我的研究表明,没有办法做到这一点。无论如何,您应该具有 root 权限,以便能够捕获设备的屏幕。

然而,进一步的研究表明,有一种方法可以让有限数量的设备做到这一点,而无需拥有 root 权限。作为证明,我可以在 Android 市场上推出以下应用程序:Screenshot UX。

它声称,该应用程序不需要root权限即可在以下设备上捕获屏幕:

  • 银河系列 (S,S2,...)
  • HTC 手机(感觉,...)
  • 摩托罗拉(Atrix,...)。
  • LG 擎天柱系列 (G2X, ...)

有人说,Tegra 设备也支持这一点。

任何人都可以指出一些文档,至少在特定设备上,这样我们至少可以支持 HTC 手机,例如。

编辑:现在我们正在尝试使用“/system/bin/screencap”,但在模拟器上没有成功。是否可以在某些设备上截屏仅意味着它们允许使用“/system/bin/screencap”或直接从/dev/graphics/fb0 读取?

或者他们提供了一些用于截屏的 API?

谢谢。

4

1 回答 1

0

屏幕截图是 android 上一个古老且被广泛讨论的话题。在过去几年中,开发了几个主要选项:

  1. 在有根设备上运行 screencap,但您已经知道这一点。

  2. 运行 screencap 并使用系统证书对您的应用程序进行签名:

有一个权限 READ_FRAME_BUFFER 但只有当您的应用程序被签名为系统应用程序时才能获得它。

  1. 使用各种 ADB 技巧,但其中大多数使用屏幕截图,AFAIK 要求您将设备连接到 PC。

但自从 Android 5 以来,情况发生了变化。

Android 5.0 允许您使用新的 android.media.projection API 为您的应用添加屏幕捕获和屏幕共享功能。此功能很有用,例如,如果您想在视频会议应用程序中启用屏幕共享。

新的 createVirtualDisplay() 方法允许您的应用程序将主屏幕(默认显示)的内容捕获到 Surface 对象中,然后您的应用程序可以通过网络发送该对象。该 API 仅允许捕获非安全屏幕内容,而不是系统音频。要开始截屏,您的应用必须首先通过使用通过 createScreenCaptureIntent() 方法获得的 Intent 启动截屏对话框来请求用户的许可。

你提到的设备已经很老了,我怀疑他们是否得到了 android 5 的官方更新,这给你留下了第二个选择。

于 2017-06-11T13:55:43.093 回答