簡體   English   中英

連續捕獲Android屏幕以在應用程序中進行處理

[英]Continuously capture Android screen for processing in an app

我需要直播或某種方法來查看當前在屏幕上顯示的內容。 不想截圖保存到文件,或在Android上的屏幕內容本地記錄等等。我不想畫面傳輸到另一個設備的視頻(我不是要截屏/ mirracast),我需要應用。

我為什么需要那個?

我想編寫一個Android應用程序,通過使燈光適應android設備上顯示的內容來管理lightpack。

  • 要求root是可以的(我希望是root)。
  • 也需要其他較低級別的二進制文件。
  • 圖像的質量不必和屏幕上的一樣精確,仍然可以接受更低的分辨率

如果您說無法完成,那就錯了。 如果您下載了適用於Android的Prismatik應用程序,您將准確地看到我想要的內容,它會抓屏並管理我的燈箱,抓屏時不會出現任何性能問題。 我只想創建自己的類似應用程序,除了將其設為開源GitHub項目...

編輯:我認為使用/ dev / graphics / fb0可能是答案的一部分。 我不知道使用它的性能如何。

我已經找到了自己問題的答案。

Android(也是Linux)具有一個幀緩沖文件(在Android上為/ dev / graphics / fb0 ),您可以讀取該文件,其中包含整個屏幕內容的當前幀緩沖。 在大多數情況下,它實際上將包含2個幀用於雙緩沖...此文件將隨着屏幕上內容的變化而不斷變化(對於我要使用的文件,這很好,我不需要對<毫秒的內容,我只需要粗略地知道屏幕上的什么顏色顯示)

該文件包含RAW格式的圖形。 在我的Galaxy S3上,每個像素包含4個字節。 如果您需要知道要讀取多少字節才能獲得當前屏幕(僅1幀),則需要進行數學計算。 我的屏幕是720x1280像素。

因此,我需要閱讀:

720 x 1280像素= 921,600像素

921,600像素*每個像素4個字節= 3,686,400字節

從中您可以提取每個顏色通道,並進行所需的計算。 讀取數據的方法實際上取決於您。 您可以編寫一些本機代碼來讀取緩沖區並進行操作。 或者,您可以使用輸入流從Android代碼讀取緩沖區。

根據設備上加載的ROM,您可能需要root才能訪問此文件(大多數情況下,您將需要root)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM