diff --git a/PlayWallNative/.classpath b/PlayWallNative/.classpath index 597b13ce51bb8511e0abd38c46faed73b957d07b..7d03288488cf3143f0a6a22231d22bac9bde9d1b 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 Binary files a/PlayWallNative/libNativeAudio.dylib and b/PlayWallNative/libNativeAudio.dylib differ diff --git a/PlayWallNative/src/de/tobias/playpad/NativeAudio.java b/PlayWallNative/src/de/tobias/playpad/NativeAudio.java index 9d391bfaf03232cd510d3b52f4c0173aa4021005..540241923ba456649783fd7754d9150772cc6440 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 0000000000000000000000000000000000000000..07fa6b9f8de81d77b8ee7334f0c64a92f822ce32 --- /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 0000000000000000000000000000000000000000..18f7a20bde755ac701e2de1d727d658c18ecc2b5 --- /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 0d5e2aceb65f7e8b9e449cf64ee1ff29e508c186..4bd710308b879f953bd90b3e96a9aa1ec1e2ef92 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 42a6d50ae302686c18dcb64be61c120118d03a35..0fe58a6cf60fba757ed8d1a7938d11149af87b5c 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));