2011-12-26 232 views
6

我正在研究Android上的應用程序,它將共享屏幕到另一個Android設備。此應用程序將作爲服務在後臺運行。以當前屏幕的屏幕截圖

我想要捕捉屏幕(當前屏幕),將其保存爲JPEG,並通過UDP連續發送到其他Android設備。

但我的問題是如何捕捉幀緩衝區捕捉當前屏幕。

請幫忙。

回答

3

您可以通過啓用

setDrawingCacheEnabled(true); 
視圖

採取佈局的屏幕截圖。

檢查此link

+0

謝謝。但是,這隻會給我的應用程序視圖的屏幕截圖。我想捕獲當我的應用程序在後臺運行時出現在屏幕上的任何內容 – user1095154 2011-12-26 09:39:42

+0

你想要的背景服務的屏幕截圖...我不知道...希望有人會幫助你 – 2011-12-26 11:58:03

7

Android的幀緩衝器(和其它Linux系統)通過打開的/ dev /圖形/ FB0設備訪問。這需要root用戶訪問權,即使擁有root權限,它也不能在所有設備上正常工作。大多數設備使用一對幀緩衝器並在它們之間切換。更大的問題是,即使使用紮根電話,Dalvik機器的用戶ID也無權訪問幀緩衝區(fb0)設備。這意味着您將永遠無法直接從Java代碼打開和讀取fb0設備。您將需要以root身份運行本地Linux應用程序,並且它將能夠訪問fb0(在用戶授予權限後)。我成功地完成了這項工作,這是相當具有挑戰性的,也讓Google不滿。我仍然可能會將其轉化爲商業應用,但限制和不兼容性可能性很低。

+0

嗨BitBank,謝謝你的回覆。 – user1095154 2012-01-16 11:44:57

+1

我使用鏈接http://www.pocketmagic.net/?p=1473訪問幀緩衝區。但是當我使用相同的代碼使用服務進行連續的屏幕截圖時,我會遇到內存問題。但是當我使用一個活動捕捉單個屏幕時,則沒有內存錯誤。你可以幫助 – user1095154 2012-01-16 11:45:29

+0

你是否映射和取消映射framebuffer內存,或者你保持一個指針並多次使用它?通過在使用fb0時保持fb0打開狀態,我能夠持續捕捉屏幕。 – BitBank 2012-01-16 15:40:38