diff --git a/examples/common/android/MainActivity.java b/examples/common/android/MainActivity.java index 81812f3..1bde839 100644 --- a/examples/common/android/MainActivity.java +++ b/examples/common/android/MainActivity.java @@ -12,6 +12,15 @@ import android.content.pm.PackageManager; import androidx.core.app.ActivityCompat; public class MainActivity extends Activity { + static { + System.loadLibrary("@NAME@"); + } + + public native boolean nativeAudioStart(); + public native void nativeAudioStop(); + public native float nativeGetParameter(int i); + public native void nativeSetParameter(int i, float v); + private WebView webView; public class WebAppInterface { @@ -21,9 +30,28 @@ public class MainActivity extends Activity { } @JavascriptInterface - public boolean requestAudioPermission() { + public void requestAudioPermission() { ActivityCompat.requestPermissions(MainActivity.this, new String[] { android.Manifest.permission.RECORD_AUDIO }, 0); - return false; + } + + @JavascriptInterface + public boolean audioStart() { + return nativeAudioStart(); + } + + @JavascriptInterface + public void audioStop() { + nativeAudioStop(); + } + + @JavascriptInterface + public float getParameter(int i) { + return nativeGetParameter(i); + } + + @JavascriptInterface + public void setParameter(int i, float v) { + nativeSetParameter(i, v); } } diff --git a/examples/common/android/android.mk b/examples/common/android/android.mk index a1ca342..c0423e3 100644 --- a/examples/common/android/android.mk +++ b/examples/common/android/android.mk @@ -1,6 +1,7 @@ COMMON_DIR := ${ROOT_DIR}/../../common/android BUILD_TOOLS_DIR := ${HOME}/Android/Sdk/build-tools/34.0.0 ANDROIDX_DIR := ${HOME}/Android/androidx +MINIAUDIO_DIR := ${ROOT_DIR}/../../../../miniaudio JAR_FILE := ${HOME}/Android/Sdk/platforms/android-34/android.jar ANDROIDX_CORE_FILE := ${ANDROIDX_DIR}/core-1.10.1.jar @@ -26,6 +27,7 @@ CXXFLAGS := \ -I${ROOT_DIR}/../src \ -I${COMMON_DIR} \ -I${ROOT_DIR}/../../../include \ + -I${MINIAUDIO_DIR} \ -O3 \ -Wall \ -Wextra \ @@ -39,7 +41,7 @@ LDFLAGS := \ -landroid SOURCES_COMMON := \ - ${COMMON_DIR}/jni.cpp + build/gen/jni.cpp JARS := \ ${JAR_FILE} \ @@ -50,6 +52,8 @@ JARS := \ ${KOTLINX_COROUTINES_CORE_FILE} \ ${KOTLINX_COROUTINES_CORE_JVM_FILE} +JNI_NAME := $(shell echo ${NAME} | sed 's:_:_1:g') + all: build/${NAME}.apk build/${NAME}.apk: build/gen/${NAME}.aligned.apk build/apk/lib/armeabi-v7a/lib${NAME}.so build/gen/keystore.jks @@ -61,7 +65,7 @@ build/gen/keystore.jks: | build/gen build/gen/${NAME}.aligned.apk: build/gen/${NAME}.unsigned.apk ${ZIPALIGN} -f -p 4 $^ $@ -build/gen/${NAME}.unsigned.apk: build/apk/classes.dex build/gen/AndroidManifest.xml build/assets/index.html build/assets/config.js | build/gen +build/gen/${NAME}.unsigned.apk: build/apk/classes.dex build/gen/AndroidManifest.xml build/assets/index.html build/assets/config.js build/apk/lib/armeabi-v7a/lib${NAME}.so| build/gen ${AAPT} package -f -M build/gen/AndroidManifest.xml -A build/assets -I ${JAR_FILE} -I ${ANDROIDX_CORE_FILE} -I ${ANDROIDX_LIFECYCLE_COMMON_FILE} -I ${ANDROIDX_VERSIONEDPARCELABLE_FILE} -I ${KOTLIN_STDLIB_FILE} -I ${KOTLINX_COROUTINES_CORE_FILE} -I ${KOTLINX_COROUTINES_CORE_JVM_FILE} -F $@ build/apk build/apk/classes.dex: build/apk/my_classes.jar @@ -72,6 +76,9 @@ build/apk/my_classes.jar: build/obj/com/orastron/${NAME}/MainActivity.class buil build/apk/lib/armeabi-v7a/lib${NAME}.so: ${SOURCES} | build/apk/lib/armeabi-v7a ${CXX} $^ ${CXXFLAGS} ${LDFLAGS} -o $@ + +build/gen/jni.cpp: ${COMMON_DIR}/jni.cpp | build/gen + cat $^ | sed s:@JNI_NAME@:${JNI_NAME}:g > $@ build/obj/com/orastron/${NAME}/MainActivity$$WebAppInterface.class: build/obj/com/orastron/${NAME}/MainActivity.class diff --git a/examples/common/android/index.html b/examples/common/android/index.html index 54ae110..454b3e4 100644 --- a/examples/common/android/index.html +++ b/examples/common/android/index.html @@ -2,35 +2,72 @@