2015-05-08 4 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.5sec только

  • ?

    JRE 1,7

  • JDK 1,7

  • ОС: Linux

Благодаря

+1

Очень маловероятно, чтобы вы могли повлиять на него каким-либо образом через Java. – Kayaman

+0

Хорошо, тогда есть обходное решение - эмуляция? Какое-то общее решение – user390525

+0

Исходный код будет вашим лучшим выбором. – Kayaman

ответ

0

Я не совсем уверен, что вы пытаетесь сделать, но я не думаю, что это вероятно, вы можете ограничить время выполнения кода или заставить его работать менее 500 мс.

Возможно, решение проблемы может быть следующим:

Вы можете выполнить задачу создания скриншота в другом потоке, затем в основном потоке вы можете проверить любое условие, которое вы хотите (например, сколько времени потребовалось для создания скриншота).

Если снятый снимок экрана не ответил в timelimit, или если другие условия были выполнены или не были выполнены, вы можете отказаться от результата скриншота, берущего поток.

Этот пост (Killing thread after some specified time limit in Java) также имеет некоторое предложение фактически убить поток, если он не закончил вовремя.

Смежные вопросы