From 8cd0e5eb5f7aff2d893ccf13f3a86831a2433449 Mon Sep 17 00:00:00 2001 From: tobias <tobias.ullerich@icloud.com> Date: Mon, 5 Sep 2016 23:17:11 +0200 Subject: [PATCH] Change loadMethod and add PlayWall AudioHandler Implementation --- PlayWallNative/.classpath | 4 +- PlayWallNative/libNativeAudio.dylib | Bin 29040 -> 29152 bytes .../src/de/tobias/playpad/NativeAudio.java | 2 +- .../tobias/playpad/NativeAudioMacHandler.java | 95 ++++++++++++++++++ .../playpad/NativeAudioMacHandlerConnect.java | 25 +++++ .../src/de_tobias_playpad_NativeAudio.h | 4 +- .../de/tobias/playpad/NativeAudioTest.java | 2 +- 7 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandler.java create mode 100644 PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandlerConnect.java diff --git a/PlayWallNative/.classpath b/PlayWallNative/.classpath index 597b13ce..7d032884 100644 --- a/PlayWallNative/.classpath +++ b/PlayWallNative/.classpath @@ -2,6 +2,8 @@ <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="test"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/PlayWallCore"/> + <classpathentry combineaccessrules="false" kind="src" path="/libUtils"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/PlayWallNative/libNativeAudio.dylib b/PlayWallNative/libNativeAudio.dylib index 705cbc2b351f91928644d28ffdf1c1d63ae698fa..9e45f56048bfff306f009c282fbffd1bbf87b2e4 100755 GIT binary patch literal 29152 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 delta 6199 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 diff --git a/PlayWallNative/src/de/tobias/playpad/NativeAudio.java b/PlayWallNative/src/de/tobias/playpad/NativeAudio.java index 9d391bfa..54024192 100644 --- a/PlayWallNative/src/de/tobias/playpad/NativeAudio.java +++ b/PlayWallNative/src/de/tobias/playpad/NativeAudio.java @@ -12,7 +12,7 @@ public class NativeAudio { public static native void setVolume(int id, double volume); - public static native void load(int id, String path); + public static native boolean load(int id, String path); public static native void dispose(int id); diff --git a/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandler.java b/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandler.java new file mode 100644 index 00000000..07fa6b9f --- /dev/null +++ b/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandler.java @@ -0,0 +1,95 @@ +package de.tobias.playpad; + +import java.nio.file.Path; + +import de.tobias.playpad.audio.AudioHandler; +import de.tobias.playpad.pad.PadStatus; +import de.tobias.playpad.pad.conntent.PadContent; +import de.tobias.utils.util.Worker; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.util.Duration; + +public class NativeAudioMacHandler extends AudioHandler { + + private static int counter = 0; + + private final int id; + private ObjectProperty<Duration> positionProperty; + private ObjectProperty<Duration> durationProperty; + private boolean isLoaded; + + public NativeAudioMacHandler(PadContent content) { + super(content); + + id = counter++; + positionProperty = new SimpleObjectProperty<>(); + durationProperty = new SimpleObjectProperty<>(); + } + + @Override + public void play() { + NativeAudio.play(id); + } + + @Override + public void pause() { + NativeAudio.pause(id); + } + + @Override + public void stop() { + NativeAudio.stop(id); + } + + @Override + public Duration getPosition() { + return positionProperty.get(); + } + + @Override + public ReadOnlyObjectProperty<Duration> positionProperty() { + return positionProperty; + } + + @Override + public Duration getDuration() { + return durationProperty.get(); + } + + @Override + public ReadOnlyObjectProperty<Duration> durationProperty() { + return durationProperty; + } + + @Override + public void setVolume(double volume, double masterVolume, double customVolume) { + double vol = customVolume * volume * masterVolume; + NativeAudio.setVolume(id, vol); + + } + + @Override + public boolean isMediaLoaded() { + return isLoaded; + } + + @Override + public void loadMedia(Path[] paths) { + Worker.runLater(() -> + { + isLoaded = NativeAudio.load(id, paths[0].toString().replace(" ", "%20")); + if (isLoaded) { + durationProperty.set(Duration.seconds(NativeAudio.getDuration(id))); + getContent().getPad().setStatus(PadStatus.READY); + } + }); + } + + @Override + public void unloadMedia() { + NativeAudio.dispose(id); + } + +} diff --git a/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandlerConnect.java b/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandlerConnect.java new file mode 100644 index 00000000..18f7a20b --- /dev/null +++ b/PlayWallNative/src/de/tobias/playpad/NativeAudioMacHandlerConnect.java @@ -0,0 +1,25 @@ +package de.tobias.playpad; + +import de.tobias.playpad.audio.AudioHandler; +import de.tobias.playpad.audio.AudioHandlerConnect; +import de.tobias.playpad.pad.conntent.PadContent; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; + +public class NativeAudioMacHandlerConnect extends AudioHandlerConnect { + + @Override + public AudioHandler createAudioHandler(PadContent content) { + return new NativeAudioMacHandler(content); + } + + @Override + public AudioHandlerViewController getAudioHandlerSettingsViewController() { + return null; + } + + @Override + public String getType() { + return "Native"; + } + +} diff --git a/PlayWallNative/src/de_tobias_playpad_NativeAudio.h b/PlayWallNative/src/de_tobias_playpad_NativeAudio.h index 0d5e2ace..4bd71030 100644 --- a/PlayWallNative/src/de_tobias_playpad_NativeAudio.h +++ b/PlayWallNative/src/de_tobias_playpad_NativeAudio.h @@ -50,9 +50,9 @@ JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_setVolume /* * Class: de_tobias_playpad_NativeAudio * Method: load - * Signature: (ILjava/lang/String;)V + * Signature: (ILjava/lang/String;)Z */ -JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_load +JNIEXPORT jboolean JNICALL Java_de_tobias_playpad_NativeAudio_load (JNIEnv *, jclass, jint, jstring); /* diff --git a/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java b/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java index 42a6d50a..0fe58a6c 100644 --- a/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java +++ b/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java @@ -3,7 +3,7 @@ package de.tobias.playpad; public class NativeAudioTest { public static void main(String[] args) { - System.load("/Users/tobias/Documents/Programmieren/Java/eclipse/PlayWallNative/libNativeAudio.dylib"); + System.load("/Users/tobias/Documents/Programmieren/Java/git/PlayWall/PlayWallNative/libNativeAudio.dylib"); NativeAudio.load(0, "/Users/tobias/Downloads/03%20Hymn%20For%20The%20Weekend.mp3.wav"); System.out.println(NativeAudio.getDuration(0)); -- GitLab