From e24ecbe387b994a4455aa7af6195bf411374162e Mon Sep 17 00:00:00 2001
From: tobias <tobias.ullerich@icloud.com>
Date: Mon, 5 Sep 2016 22:47:08 +0200
Subject: [PATCH] Inital commit NativeAudio

---
 PlayWallNative/.classpath                     |   7 ++
 PlayWallNative/.gitignore                     |   1 +
 PlayWallNative/.project                       |  17 ++++
 .../.settings/org.eclipse.jdt.core.prefs      |  11 +++
 PlayWallNative/libNativeAudio.dylib           | Bin 0 -> 29040 bytes
 .../src/de/tobias/playpad/NativeAudio.java    |  22 +++++
 .../src/de_tobias_playpad_NativeAudio.h       |  85 ++++++++++++++++++
 .../de/tobias/playpad/NativeAudioTest.java    |  20 +++++
 8 files changed, 163 insertions(+)
 create mode 100644 PlayWallNative/.classpath
 create mode 100644 PlayWallNative/.gitignore
 create mode 100644 PlayWallNative/.project
 create mode 100644 PlayWallNative/.settings/org.eclipse.jdt.core.prefs
 create mode 100755 PlayWallNative/libNativeAudio.dylib
 create mode 100644 PlayWallNative/src/de/tobias/playpad/NativeAudio.java
 create mode 100644 PlayWallNative/src/de_tobias_playpad_NativeAudio.h
 create mode 100644 PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java

diff --git a/PlayWallNative/.classpath b/PlayWallNative/.classpath
new file mode 100644
index 00000000..597b13ce
--- /dev/null
+++ b/PlayWallNative/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-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="output" path="bin"/>
+</classpath>
diff --git a/PlayWallNative/.gitignore b/PlayWallNative/.gitignore
new file mode 100644
index 00000000..ae3c1726
--- /dev/null
+++ b/PlayWallNative/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/PlayWallNative/.project b/PlayWallNative/.project
new file mode 100644
index 00000000..68507fdf
--- /dev/null
+++ b/PlayWallNative/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>PlayWallNative</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/PlayWallNative/.settings/org.eclipse.jdt.core.prefs b/PlayWallNative/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..3a215370
--- /dev/null
+++ b/PlayWallNative/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/PlayWallNative/libNativeAudio.dylib b/PlayWallNative/libNativeAudio.dylib
new file mode 100755
index 0000000000000000000000000000000000000000..705cbc2b351f91928644d28ffdf1c1d63ae698fa
GIT binary patch
literal 29040
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

literal 0
HcmV?d00001

diff --git a/PlayWallNative/src/de/tobias/playpad/NativeAudio.java b/PlayWallNative/src/de/tobias/playpad/NativeAudio.java
new file mode 100644
index 00000000..9d391bfa
--- /dev/null
+++ b/PlayWallNative/src/de/tobias/playpad/NativeAudio.java
@@ -0,0 +1,22 @@
+package de.tobias.playpad;
+
+public class NativeAudio {
+
+	public static native void play(int id);
+
+	public static native void pause(int id);
+
+	public static native void stop(int id);
+
+	public static native double getVolume(int id);
+	
+	public static native void setVolume(int id, double volume);
+
+	public static native void load(int id, String path);
+
+	public static native void dispose(int id);
+
+	public static native double getDuration(int id);
+	
+	public static native double getPosition(int id);
+}
diff --git a/PlayWallNative/src/de_tobias_playpad_NativeAudio.h b/PlayWallNative/src/de_tobias_playpad_NativeAudio.h
new file mode 100644
index 00000000..0d5e2ace
--- /dev/null
+++ b/PlayWallNative/src/de_tobias_playpad_NativeAudio.h
@@ -0,0 +1,85 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class de_tobias_playpad_NativeAudio */
+
+#ifndef _Included_de_tobias_playpad_NativeAudio
+#define _Included_de_tobias_playpad_NativeAudio
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    play
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_play
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    pause
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_pause
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    stop
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_stop
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    getVolume
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getVolume
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    setVolume
+ * Signature: (ID)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_setVolume
+  (JNIEnv *, jclass, jint, jdouble);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    load
+ * Signature: (ILjava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_load
+  (JNIEnv *, jclass, jint, jstring);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    dispose
+ * Signature: (I)V
+ */
+JNIEXPORT void JNICALL Java_de_tobias_playpad_NativeAudio_dispose
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    getDuration
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getDuration
+  (JNIEnv *, jclass, jint);
+
+/*
+ * Class:     de_tobias_playpad_NativeAudio
+ * Method:    getPosition
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL Java_de_tobias_playpad_NativeAudio_getPosition
+  (JNIEnv *, jclass, jint);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java b/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java
new file mode 100644
index 00000000..42a6d50a
--- /dev/null
+++ b/PlayWallNative/test/de/tobias/playpad/NativeAudioTest.java
@@ -0,0 +1,20 @@
+package de.tobias.playpad;
+
+public class NativeAudioTest {
+	
+	public static void main(String[] args) {
+		System.load("/Users/tobias/Documents/Programmieren/Java/eclipse/PlayWallNative/libNativeAudio.dylib");
+
+		NativeAudio.load(0, "/Users/tobias/Downloads/03%20Hymn%20For%20The%20Weekend.mp3.wav");
+		System.out.println(NativeAudio.getDuration(0));
+		NativeAudio.play(0);
+		
+		while (true) {
+			try {
+				Thread.sleep(100);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+}
-- 
GitLab