From 2ae8d8201e7e2c337e4ec0886c21ed5d3b96c2e8 Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Fri, 11 Feb 2011 08:52:27 +0000 Subject: [PATCH] Winamp toegevoegd. Dat heeft een aantal problemen laten zien: -Een applicatie een Thread laten extended geeft problemen met naamgeving. -De methoden in de WinampApplication class moeten exceptions gooien, maar dat kan niet omdat de Application dat niet heeft. -Misschien is de boolean connected overbodig. --- java/src/pm/Main.java | 2 + java/src/pm/application/Application.java | 13 ++- .../application/Winamp/WinampApplication.java | 102 ++++++++++++++++++ .../application/iTunes/iTunesApplication.java | 4 +- 4 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 java/src/pm/application/Winamp/WinampApplication.java diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 5bc5517..80763e8 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -5,6 +5,7 @@ import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import pm.application.Application; +import pm.application.Winamp.WinampApplication; import pm.application.iTunes.iTunesApplication; import pm.application.voorbeeld.VoorbeeldApplication; import pm.device.Device; @@ -62,6 +63,7 @@ public class Main { add(new VoorbeeldApplication()); add(new iTunesApplication()); + add(new WinampApplication()); applicationCycle.next(); for (Application application : applicationCycle) { application.start(); diff --git a/java/src/pm/application/Application.java b/java/src/pm/application/Application.java index 1d5618f..bd12ed8 100644 --- a/java/src/pm/application/Application.java +++ b/java/src/pm/application/Application.java @@ -1,6 +1,17 @@ package pm.application; -public abstract class Application { +import java.util.LinkedList; +import java.util.Queue; + +import pm.Action; + +public abstract class Application { //WinampController. + Queue actionQueue; + + public Application() { + actionQueue = new LinkedList(); + } + public void start() {} public void exit() {} } \ No newline at end of file diff --git a/java/src/pm/application/Winamp/WinampApplication.java b/java/src/pm/application/Winamp/WinampApplication.java new file mode 100644 index 0000000..9d79485 --- /dev/null +++ b/java/src/pm/application/Winamp/WinampApplication.java @@ -0,0 +1,102 @@ +package pm.application.Winamp; + +import pm.application.Application; + +import com.qotsa.exception.InvalidHandle; +import com.qotsa.exception.InvalidParameter; +import com.qotsa.jni.controller.WinampController; + +public class WinampApplication extends Application { + + protected boolean connected; + + protected boolean muted; + protected int volume; + + public WinampApplication() { + connected = false; + } + + public void start() throws Exception { + if (!connected) { + WinampController.run(); + connected = true; + } + } + + public void exit() throws InvalidHandle { + if (connected) { + WinampController.exit(); + connected = false; + } + } + + /* Actions */ + public void play() throws InvalidHandle { + if (connected) { + WinampController.play(); + } + } + + public void pause() throws InvalidHandle { + if (connected) { + WinampController.pause(); + } + } + + public void resume() throws InvalidHandle { + if (connected) { + WinampController.resume(); + } + } + + public void next() throws InvalidHandle { + if (connected) { + WinampController.nextTrack(); + } + } + + public void previous() throws InvalidHandle { + if (connected) { + WinampController.previousTrack(); + } + } + + public void forward() throws InvalidHandle { + if (connected) { + WinampController.fwd5Secs(); + } + } + + public void rewind() throws InvalidHandle { + if (connected) { + WinampController.rew5Secs(); + } + } + + + public void mute() throws InvalidHandle, InvalidParameter { + if (connected) { + if(muted) { + WinampController.setVolume(volume); + muted = false; + } else { + volume = WinampController.getVolume(); + WinampController.setVolume(0); + muted = true; + } + } + } + + public void volumeUp() throws InvalidHandle { + if (connected) { + WinampController.increaseVolume(); + } + } + + public void volumeDown() throws InvalidHandle { + if (connected) { + WinampController.decreaseVolume(); + } + } +} diff --git a/java/src/pm/application/iTunes/iTunesApplication.java b/java/src/pm/application/iTunes/iTunesApplication.java index 1d218fd..783b7fc 100644 --- a/java/src/pm/application/iTunes/iTunesApplication.java +++ b/java/src/pm/application/iTunes/iTunesApplication.java @@ -69,7 +69,7 @@ public class iTunesApplication extends Application implements iTunesEventsInterf if (connected) { iTunes.fastForward(); //sleep(SEEK_TIME); - //resume(); + resume(); } } @@ -77,7 +77,7 @@ public class iTunesApplication extends Application implements iTunesEventsInterf if (connected) { iTunes.rewind(); //sleep(SEEK_TIME); - //resume(); + resume(); } }