2010-11-12 36 views
1

我目前正在爲Android開發一款遊戲,我想截取它的截圖。 我在eclipse中使用了DDMS工具。但是,大多數屏幕截圖是兩個幀的混合:DDMS屏幕截圖與vsync不同步

___________ 
|new frame| 
|   | 
|   | 
|_________| 
|old frame| 
|   | 
|_________| 

分隔線位於不同位置。

這使我得出的結論是,當前幀仍在繪製時正在製作屏幕截圖。

有沒有辦法讓screencap與硬件同步?

有沒有其他的方法來製作屏幕截圖的地方呢?

在此先感謝您的任何提示!

更新:請參閱我對我解決方案的接受答案的最新評論。

+0

看看系統/核心/ ADB/framebuffer_service.c。它只是打開/ dev/graphics/fb0,使用ioctl獲取參數,然後用多個讀/寫調用一次將整個事件複製出256個字節。 – fadden 2010-11-12 22:32:15

+0

thx,但我不想去那個級別只是截圖。 – 2010-11-12 22:53:21

回答

4

我知道這可能是一個糟糕的解決方案,但它會是一個快速的解決方案。你可以(暫時的,只是調試等)讓遊戲暫停,這樣你就可以截取屏幕截圖了嗎?又名,「凍結」一段時間?

+0

是的,我試過了,但我沒有能夠停止遊戲再次清除屏幕。如果找不到更方便的解決方案,我會再試一次。 thx – 2010-11-12 19:56:33

+0

你可以在調試下運行它,並在代碼中設置一個斷點(在重繪之前/之後)? – 2010-11-12 20:30:54

+0

完全忘記了使用斷點 - 非常明顯!我會嘗試在Hrk的建議後,thx – 2010-11-12 20:53:35

0

複雜的方式: 看看vnc-server應用程序。如果您的設備紮根,它可以顯示相機視頻流,而不會出現您解釋的問題。但是它使用了很多jni文件,並且可能很難整合,只能截取一些截圖。或者,您可以爲您的設備創建根目錄,安裝該應用程序並在計算機vnc-client應用程序上創建快照。市場

https://github.com/oNaiPs/droid-VNC-server/tree/

應用程序: 「org.onaips.vnc」

+0

這聽起來像一個偉大的解決方案!我的設備已經紮根,讓我們來看看。 – 2010-11-12 20:52:22

+0

好的,我嘗試了它和vnc的工作原理,但它甚至超過局域網,並且確實存在相同的問題:http://dl.dropbox.com/u/456585/so_vnc.png – 2010-11-12 21:02:02

+0

對不起,它適用於相機與我的三星Galaxy S在我的回憶.. – Hrk 2010-11-12 21:32:35