2015-05-08 93 views
1

我剛遇到一個奇怪的問題;至於我能得到它的屏幕捕捉代碼利用未固定的時間:java.awt.Robot - 截圖需要多少時間

startTime = System.currentTimeMillis();     

endTime = System.currentTimeMillis(); 
totalTime = endTime - startTime; 
System.out.println(this.getId()+" A: TIME TAKEN BETWEEN SCREENSHOTS: "+totalTime); 


java.awt.image.BufferedImage image = new java.awt.Robot().createScreenCapture(new java.awt.Rectangle(250,150,500,500)); 

endTime = System.currentTimeMillis(); 
totalTime = endTime - startTime; 
System.out.println(this.getId()+" B: TIME TAKEN BETWEEN SCREENSHOTS: "+totalTime); 

這是很奇怪的原因有時是108mls和下一次它可以說480mls :(所以它很很難搞清楚截圖算法:S

所以我的問題是...如何找出一個屏幕截圖將在0.5秒僅

PS採取什麼樣的時間或如何使截圖時間可以解決的(有限)

  • JRE 1.7

  • JDK 1.7

  • 操作系統:Linux

感謝

+1

您很可能無法通過Java以任何方式影響它。 – Kayaman

+0

好的,是否有解決方法 - 仿真?一些常見的解決方案 – user390525

+0

原生代碼將是你最好的選擇。 – Kayaman

回答

0

我不能完全確定你所要完成的是什麼,但我不認爲這是可能會限制代碼執行的時間,或者強制它運行少於500毫秒。

也許下面的問題可以解決這個問題?

您可以執行在不同線程中創建屏幕截圖的任務,然後在主線程中可以檢查所需的任何條件(例如創建屏幕截圖需要多長時間)。

如果屏幕截圖線程在時間限制內沒有響應,或者其他條件已滿足或未滿足,則可以放棄截取線程的結果。

這篇文章(Killing thread after some specified time limit in Java)也有一些建議,如果它沒有及時完成,實際上殺死線程。