Skip to content
Snippets Groups Projects
Commit 8cd0e5eb authored by tobias's avatar tobias
Browse files

Change loadMethod and add PlayWall AudioHandler Implementation

parent e24ecbe3
No related branches found
No related tags found
No related merge requests found
......@@ -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>
No preview for this file type
......@@ -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);
......
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);
}
}
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";
}
}
......@@ -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);
/*
......
......@@ -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));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment