Browse Source

Declare stream camera permissions and cancel capture at core restart

master
evgeny 1 week ago
parent
commit
f2a5dde761
  1. 3
      tools/chatgui-android/app/src/main/AndroidManifest.xml
  2. 8
      tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt

3
tools/chatgui-android/app/src/main/AndroidManifest.xml

@ -12,6 +12,7 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
@ -83,6 +84,8 @@
android:exported="false" android:exported="false"
android:foregroundServiceType="phoneCall|microphone" /> android:foregroundServiceType="phoneCall|microphone" />
<service android:name=".data.StreamService" android:exported="false" android:foregroundServiceType="camera|microphone" />
<service <service
android:name=".data.UtunConnectionService" android:name=".data.UtunConnectionService"
android:exported="true" android:exported="true"

8
tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt

@ -43,7 +43,7 @@ object NativeLib {
fun stop() { fun stop() {
runBlocking(Dispatchers.Main.immediate) { runBlocking(Dispatchers.Main.immediate) {
CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel() StreamController.reset(); CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel()
} }
if (!isReady()) return if (!isReady()) return
nativeStop() nativeStop()
@ -58,7 +58,7 @@ object NativeLib {
fun destroy() { fun destroy() {
runBlocking(Dispatchers.Main.immediate) { runBlocking(Dispatchers.Main.immediate) {
CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel() StreamController.reset(); CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel()
} }
nativeDestroy() nativeDestroy()
runBlocking(Dispatchers.Main.immediate) { ChatApplication.instance.memberFiles.coreStopped() } runBlocking(Dispatchers.Main.immediate) { ChatApplication.instance.memberFiles.coreStopped() }
@ -66,7 +66,7 @@ object NativeLib {
fun restart(dbPath: String, controlPort: Int, configText: String): Boolean { fun restart(dbPath: String, controlPort: Int, configText: String): Boolean {
runBlocking(Dispatchers.Main.immediate) { runBlocking(Dispatchers.Main.immediate) {
CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel() StreamController.reset(); CallController.reset(); ChatApplication.instance.avatars.stop(); ChatApplication.instance.memberFiles.cancel()
} }
return nativeRestart(configText) return nativeRestart(configText)
} }
@ -172,7 +172,7 @@ object NativeLib {
/* ── Voice recording ── */ /* ── Voice recording ── */
fun voiceStart(channelId: String, replyTo: String = "", requestId: Long = 0): Boolean = fun voiceStart(channelId: String, replyTo: String = "", requestId: Long = 0): Boolean =
nativeVoiceStart(channelId, messageIdBytes(replyTo), requestId) !StreamController.blocksCapture() && nativeVoiceStart(channelId, messageIdBytes(replyTo), requestId)
fun voiceFeed(samples: ShortArray): Boolean = nativeVoiceFeed(samples) fun voiceFeed(samples: ShortArray): Boolean = nativeVoiceFeed(samples)
fun voiceStop(): Int = nativeVoiceStop() fun voiceStop(): Int = nativeVoiceStop()
fun voiceCancel() { nativeVoiceCancel() } fun voiceCancel() { nativeVoiceCancel() }

Loading…
Cancel
Save