From fc2adcf81dcb429ff2ba4c8ad900212fff7170e2 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 28 Jul 2026 23:52:33 +0300 Subject: [PATCH] =?UTF-8?q?android:=20fix=20voice=20recording=20=E2=80=94?= =?UTF-8?q?=20init=20g=5Frec,=20move=20includes,=20check=20startRecording?= =?UTF-8?q?=20result?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - voice_recorder_init(db_path) in utun_bridge_init (was never called, g_rec stayed NULL) - voice_recorder_deinit() in utun_bridge_destroy - ViewModel: set _isRecording only after startRecording() succeeds --- .../src/main/java/com/utun/chat/viewmodel/ChatViewModel.kt | 5 ++++- tools/chatgui-android/jni_bridge/android_jni_bridge.c | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/viewmodel/ChatViewModel.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/viewmodel/ChatViewModel.kt index 353d80c9..653c7f48 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/viewmodel/ChatViewModel.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/viewmodel/ChatViewModel.kt @@ -195,11 +195,14 @@ class ChatViewModel : ViewModel() { fun startVoiceRecording() { val ch = _currentChannel.value ?: return + if (!audioRecorder.startRecording(ch.id)) { + LogManager.addLog("ERROR", "VM", "voice recording failed to start") + return + } _isRecording.value = true _isRecordingLocked.value = false recordingStartTimeMs = System.currentTimeMillis() _recordingDurationMs.value = 0 - audioRecorder.startRecording(ch.id) LogManager.addLog("INFO", "VM", "voice recording started ch=${ch.id}") } diff --git a/tools/chatgui-android/jni_bridge/android_jni_bridge.c b/tools/chatgui-android/jni_bridge/android_jni_bridge.c index ddfb1140..b7a203b0 100644 --- a/tools/chatgui-android/jni_bridge/android_jni_bridge.c +++ b/tools/chatgui-android/jni_bridge/android_jni_bridge.c @@ -11,6 +11,8 @@ #include "../libutun_lite/utun_config_api.h" #include "../libutun_lite/invite_link_c.h" #include "../libutun_lite/instance_lite.h" +#include "../libutun_lite/voice_recorder.h" +#include "../libutun_lite/attachment_sender.h" #include "../../../lib/debug_config.h" #include "../../../lib/u_async.h" #include "../../../lib/mem.h" @@ -140,10 +142,12 @@ bool utun_bridge_init(const char* db_path, int control_port, bridge_log(BLEV_INFO, "bridge init: db=%s port=%d (stub, use nativeStart for real init)", db_path ? db_path : "(null)", control_port); + voice_recorder_init(db_path); return true; } void utun_bridge_destroy(void) { + voice_recorder_deinit(); instance_lite_stop(); g_on_log = NULL; g_on_event = NULL; @@ -428,9 +432,6 @@ int utun_bridge_is_responsive(void) { * Voice recording * ────────────────────────────────────────────────────────────────── */ -#include "../libutun_lite/voice_recorder.h" -#include "../libutun_lite/attachment_sender.h" - int utun_bridge_voice_start(const char* channel_id) { return voice_recorder_start(channel_id, 48000, 1); }