2011-09-26 55 views
3

是否有訪問Android設備 的截圖編程的任何簡潔的方式。我正在尋找一些15-20fps。Android截圖 - 如何?

我發現一個代碼 android\generic\frameworks\base\services\surfaceflinger\tests\screencap\scr eencap.cpp, 我建的可執行文件,並把它放在/數據,改變了模式777

但是當我試圖使用ADB shell來執行它,它給了下面的錯誤。

# chmod 777 test-screencap 
chmod 777 test-screencap 
# ./test-screencap test 
./test-screencap test 
screen capture failed: Function not implemented 

我也知道,由Android團隊建議 我們可以訪問FB0但它不是一個正確的方法。是否可以訪問框架 圖層的屏幕截圖。我beleive面護圈組成單獨的層並且給它 framebuffer.Where正是這樣做?應用程序能否訪問 這樣的代碼。

有一些Java應用程序也使用它DDMS真正抓住這個 的幀緩衝器數據沒有root權限。但fps真的很差。

我beleive應該有一些或做上述工作的其他方式。 請給我建議一些乾淨的做法。歡迎提出建議。

+0

那麼你想寫一個手機應用程序,試圖拍攝手機的屏幕截圖,或者這是一個PC程序在通過USB連接時拍攝手機的屏幕截圖? – JPM

+0

這是一個手機應用程序,我想通過它獲取屏幕截圖。 – junky

回答

1

如果您沒有固定電話,那麼您嘗試做的事情是不可能的,有一個應用程序在那裏做你正在嘗試的,Screenshot ER。最新的OEM的是把它變成自己的/系統/應用程序現在...所以你可以使用他們的應用程序,看看這個article對於已啓用此功能的設備。除此之外,你與屏幕很堅持,但也有意義擷因爲這使可能會導致應用程序保存屏幕捕獲和發送這些信息出來,使病毒類型的應用程序...

他人信息通過..... Eclipse可以獲得DDMS視角的屏幕截圖。如果你看看Eclipse DDMS代碼庫,它實際上也是一個獨立的應用程序。您可能可以使用此Java代碼。

AdbHelper.getFrameBuffer(AndroidDebugBridge.getSocketAddress(), this); 
0

看看droid VNC Server 這是一個開源項目,它可以複製源代碼到你的私人電腦。 (http://github.com/oNaiPs/droid-VNC-server)。我正在調查VNC如何做,但要做到這一點真的很難。

Read framebuffer content是一個很好的解決方案也。但它只適用於android < 3.x。我不知道如何解決它在Android 4.x上的工作。如果您知道如何(看到我的建議後),請在此分享。通過我的研究,我發現有很多人在尋找這個。

希望這會有所幫助。 [email protected]。 Android的自由撰稿人。

+1

更新:在android 4.x(也許在android 3.x上),fb0只包含引導時的設備映像。我的意思是啓動後,dev/graphics/fb0不再包含精確的屏幕內容。 –