Я разрабатываю своего рода простое противоугонное Java-приложение в качестве университетского проекта.Он записывает сцену через камеру и обнаруживает, когда происходит много изменений в сцене, путем разницы пикселей (вы можете увидеть полные источники здесь: https://github.com/lmammino/movementDetector). Я использую Java-привязки opencv для обработки различных операций, которые мне нужнывыполнять на изображениях.У меня есть некоторые проблемы, потому что я хочу, чтобы пользователь запустил / остановил / перезапустил процесс захвата видео с помощью некоторых кнопок в основном пользовательском интерфейсе.Для захвата видеопотока я использую java opencv классы CanvasFrame
и OpenCVFrameGrabber
.У меня есть deveoped класс Runnable
с именем Detector
(полный источник здесь: http://bit.ly/l1Z3tY)
. Класс Detector
автоматически запускает новый поток, вызывая его метод запуска:
public void start()
{
if (this.thread == null)
this.thread = new Thread(this);
this.isThreadActive = true;
this.thread.start();
}
В первый раз, когда я вызываю метод start из экземпляра Detector
, все работает нормально. Когда я пытаюсь остановить и перезапустить процесс, он выдает недопустимое исключение состояния потока ...
Так что я думаю, чтоВесь вопрос здесь в следующем: «Каков наилучший способ запустить / остановить / перезапустить поток?»
TNX