diff --git a/PdCore/build.gradle b/PdCore/build.gradle index 7f0c7784..b08d8552 100644 --- a/PdCore/build.gradle +++ b/PdCore/build.gradle @@ -23,7 +23,7 @@ allprojects { // These are specific to PdCore, but nexusPublishing needs them here: // https://github.com/gradle-nexus/publish-plugin/issues/84 group = 'io.github.libpd.android' -version = '1.4.2-SNAPSHOT' +version = '1.4.3-SNAPSHOT' // Create a Sonatype user token for these environment variables: // export ORG_GRADLE_PROJECT_sonatypeUsername="" diff --git a/PdCore/pd-core/src/main/java/org/puredata/android/io/PdAudio.java b/PdCore/pd-core/src/main/java/org/puredata/android/io/PdAudio.java index 5d235c22..8c136c11 100644 --- a/PdCore/pd-core/src/main/java/org/puredata/android/io/PdAudio.java +++ b/PdCore/pd-core/src/main/java/org/puredata/android/io/PdAudio.java @@ -31,6 +31,7 @@ public class PdAudio { private static int inputDeviceId = -1; private static int outputDeviceId = -1; private static int bufferSizeInFrames = -1; + private static boolean autoReopen = true; private static final Handler handler = new Handler(Looper.getMainLooper()); private static final Runnable pollRunner = new Runnable() { @Override @@ -65,6 +66,7 @@ public synchronized static void initAudio(int sampleRate, int inChannels, int ou options.put("inputDeviceId", String.valueOf(inputDeviceId)); options.put("outputDeviceId", String.valueOf(outputDeviceId)); options.put("bufferSizeInFrames", String.valueOf(bufferSizeInFrames)); + options.put("autoReopen", String.valueOf(autoReopen ? 1 : 0)); if (PdBase.openAudio(inChannels, outChannels, sampleRate, options) != 0) { throw new IOException("unable to open Pd audio: " + sampleRate + ", " + inChannels + ", " + outChannels); } @@ -106,6 +108,15 @@ public synchronized static void setBufferSizeInFrames(int frames) { bufferSizeInFrames = frames; } + /** + * Enable the audio wrapper to reopen the default device when the current device has been disconnected + * + * @param reopen enable auto-reopening (true by default) + */ + public synchronized static void setAutoReopen(boolean reopen) { + autoReopen = reopen; + } + /** * Starts the audio components. * diff --git a/PdCore/pd-core/src/main/jni/libpd b/PdCore/pd-core/src/main/jni/libpd index 3fc60ea7..e3cd52fd 160000 --- a/PdCore/pd-core/src/main/jni/libpd +++ b/PdCore/pd-core/src/main/jni/libpd @@ -1 +1 @@ -Subproject commit 3fc60ea70f5d6f27d0de1c2fa2c8b3a2b5ca82e6 +Subproject commit e3cd52fd751758f60030eb1270671b06e5043fb0 diff --git a/PdTest/src/org/puredata/android/test/PdTest.java b/PdTest/src/org/puredata/android/test/PdTest.java index 2d83ccc2..0fe92e80 100644 --- a/PdTest/src/org/puredata/android/test/PdTest.java +++ b/PdTest/src/org/puredata/android/test/PdTest.java @@ -235,7 +235,7 @@ public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.about_item) { AlertDialog.Builder ad = new AlertDialog.Builder(this); ad.setTitle(R.string.about_title); - ad.setMessage(R.string.about_msg); + ad.setMessage(getString(R.string.about_msg) + "\n\nPure Data version is " + PdBase.versionString()); ad.setNeutralButton(android.R.string.ok, null); ad.setCancelable(true); ad.show(); diff --git a/README.md b/README.md index 3635c6c8..7258e744 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ allprojects { ```gradle dependencies { - implementation 'io.github.libpd.android:pd-core:1.4.2-SNAPSHOT' + implementation 'io.github.libpd.android:pd-core:1.4.3-SNAPSHOT' } ``` diff --git a/build.gradle b/build.gradle index e483fd3a..080474fb 100644 --- a/build.gradle +++ b/build.gradle @@ -20,5 +20,5 @@ ext { compileSdk = 34 androidxLegacySupportVersion = '1.0.0' ndkVersion = libs.versions.ndk.get() - pdCoreVersion = '1.4.2-SNAPSHOT' // Must match version in PdCore/build.gradle + pdCoreVersion = '1.4.3-SNAPSHOT' // Must match version in PdCore/build.gradle }