fix: address Copilot review (ABI check, feature flag default, recorder crash)

This commit is contained in:
Chris7X 2026-04-06 00:33:29 +02:00
parent bf4e318753
commit b885f728a2
3 changed files with 14 additions and 11 deletions

View file

@ -22,15 +22,18 @@ plugins {
alias(libs.plugins.meshtastic.kotlinx.serialization)
}
// ─── Codec2 JNI detection ─────────────────────────────────────────
val codec2SoArm64 = File(projectDir, "src/androidMain/jniLibs/arm64-v8a/libcodec2.so")
val codec2JniArm64 = File(projectDir, "src/androidMain/jniLibs/arm64-v8a/libcodec2_jni.so")
val codec2Available = codec2SoArm64.exists() && codec2JniArm64.exists()
// --- Codec2 JNI detection ---------------------------------------------------
val codec2SoArm64 = File(projectDir, "src/androidMain/jniLibs/arm64-v8a/libcodec2.so")
val codec2JniArm64 = File(projectDir, "src/androidMain/jniLibs/arm64-v8a/libcodec2_jni.so")
val codec2SoX86_64 = File(projectDir, "src/androidMain/jniLibs/x86_64/libcodec2.so")
val codec2JniX86_64 = File(projectDir, "src/androidMain/jniLibs/x86_64/libcodec2_jni.so")
val codec2Available = (codec2SoArm64.exists() && codec2JniArm64.exists()) ||
(codec2SoX86_64.exists() && codec2JniX86_64.exists())
if (codec2Available) {
logger.lifecycle(":feature:voiceburst — libcodec2.so + libcodec2_jni.so trovate")
logger.lifecycle(":feature:voiceburst -- libcodec2.so + libcodec2_jni.so found")
} else {
logger.lifecycle(":feature:voiceburst — .so assenti → stub mode (esegui scripts/build_codec2.sh)")
logger.lifecycle(":feature:voiceburst -- .so not found -> stub mode (run scripts/build_codec2.sh)")
}
kotlin {
@ -73,6 +76,6 @@ kotlin {
}
}
// ─── NESSUN externalNativeBuild ───────────────────────────────────
// Le .so prebuilt in jniLibs/ vengono incluse automaticamente da AGP.
// Il JNI wrapper è compilato da scripts/build_codec2.sh.
// No externalNativeBuild block needed.
// Prebuilt .so files in jniLibs/ are packaged automatically by AGP.
// The JNI wrapper is compiled separately via scripts/build_codec2.sh.

View file

@ -143,7 +143,7 @@ class AndroidAudioRecorder(
Logger.e(e, tag = TAG) { "Error during recording" }
onError(e)
} finally {
record.stop()
runCatching { record.stop() } // guard against IllegalStateException on early-stop
record.release()
audioRecord = null
keepRecording = false

View file

@ -71,7 +71,7 @@ class AndroidVoiceBurstRepository(
// ─── Feature flag ─────────────────────────────────────────────────────────
private val featureEnabledFlow = dataStore.data
.map { prefs -> prefs[KEY_FEATURE_ENABLED] ?: true } // Default ON
.map { prefs -> prefs[KEY_FEATURE_ENABLED] ?: false } // Default OFF (experimental opt-in)
override val isFeatureEnabled: StateFlow<Boolean> =
featureEnabledFlow.stateIn(