Unnecessary lambda usage
[kaka/cakelight.git] / src / kaka / cakelight / VideoDeviceListener.java
CommitLineData
03670958
TW
1package kaka.cakelight;
2
3import java.io.File;
4import java.util.Optional;
5import java.util.function.Consumer;
6
7import static kaka.cakelight.Main.log;
8
9public class VideoDeviceListener {
10 private Thread thread;
11 private Consumer<Optional<File>> changeConsumer;
12 private File lastDevice = null;
13
14 public void startListening() {
15 thread = new Thread() {
16 public void run() {
17 try {
18 while (!isInterrupted()) {
19 Optional<File> device = findVideoDevice();
20 if (!device.equals(Optional.ofNullable(lastDevice))) {
21 log("Video device change: %s", device.map(File::getAbsolutePath).orElse("none"));
22 changeConsumer.accept(device);
dcef7890 23 lastDevice = device.orElse(null);
03670958
TW
24 }
25 Thread.sleep(1000);
26 }
27 } catch (InterruptedException e) {
28 }
29 }
30 };
31 thread.start();
32 }
33
34 public void stopListening() {
35 thread.interrupt();
36 }
37
38 private Optional<File> findVideoDevice() {
39 File[] files = new File("/dev").listFiles((dir, name) -> name.matches("video[0-9]+"));
40 if (files == null || files.length == 0) {
41 return Optional.empty();
42 } else {
43 return Optional.of(files[0]);
44 }
45 }
46
47 public void onVideoDeviceChange(Consumer<Optional<File>> consumer) {
48 changeConsumer = consumer;
49 }
50}