Android上的设备特定屏幕捕获

时间:2013-01-09 16:46:46

标签: android screen capture

我们需要找到一种方法来捕捉Android屏幕,而不使用任何可在非root电话上运行的外部软件。

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

然而,进一步的研究表明,有一种方法可以在没有root权限的情况下为有限数量的设备做到这一点。作为证据,我可以在Android市场上推出以下应用程序:屏幕截图UX。

它声称,该应用不需要root权限来捕获以下设备上的屏幕:

  • Gallaxy系列(S,S2,...)
  • HTC手机(Sensation,......)
  • 摩托罗拉(Atrix,......)。
  • LG Optimus系列(G2X,...)

有人说,Tegra设备也支持它。

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

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

或者他们为截取屏幕提供了一些API?

感谢。

1 个答案:

答案 0 :(得分:0)

屏幕截图是关于android的一个古老且讨论得很多的话题。 在过去几年中,开发了几个主要选项:

  1. 在root设备上运行screencap,但你已经知道了。

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

  3. 有一个权限READ_FRAME_BUFFER但您只能在应用程序作为系统应用程序签名时获取。

    1. 使用各种ADB技巧,但大多数使用screencap和AFAIK要求您将设备连接到PC。
    2. But Since Android 5 things have changed.

        

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

           

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

      你提到的设备已经很老了,我怀疑他们得到了android 5的正式更新,这让你有了第二个选项。