mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-06-22 10:02:20 +00:00
fix: android prompt "Failed to stop voice call" on conn ended (#8434)
* fix: android prompt "Failed to stop voice call" on conn ended Signed-off-by: fufesou <linlong1266@gmail.com> * Remove invalid comment Signed-off-by: fufesou <linlong1266@gmail.com> * Better control of voice call status Signed-off-by: fufesou <linlong1266@gmail.com> * Better voice call status control Signed-off-by: fufesou <linlong1266@gmail.com> * better end conn for voice call Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
32c4712d5e
commit
74cc5abd09
3 changed files with 11 additions and 14 deletions
|
|
@ -119,21 +119,17 @@ class AudioRecordHandle(private var context: Context, private var isVideoStart:
|
|||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
|
||||
return false
|
||||
}
|
||||
if (isVideoStart() || isAudioStart()) {
|
||||
if (!switchToVoiceCall(mediaProjection)) {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
if (!switchToVoiceCall(mediaProjection)) {
|
||||
return false
|
||||
}
|
||||
// No need to check if video or audio is started here.
|
||||
if (!switchToVoiceCall(mediaProjection)) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun onVoiceCallClosed(mediaProjection: MediaProjection?): Boolean {
|
||||
// Return true if `Build.VERSION.SDK_INT < Build.VERSION_CODES.R`, because is was not started.
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
|
||||
return false
|
||||
return true
|
||||
}
|
||||
if (isVideoStart()) {
|
||||
switchOutVoiceCall(mediaProjection)
|
||||
|
|
|
|||
|
|
@ -105,11 +105,10 @@ class _RemotePageState extends State<RemotePage> {
|
|||
}
|
||||
await keyboardSubscription.cancel();
|
||||
removeSharedStates(widget.id);
|
||||
if (isAndroid) {
|
||||
// Only one client is considered here for now.
|
||||
// TODO: take into account the case where there are multiple clients
|
||||
gFFI.invokeMethod("on_voice_call_closed");
|
||||
}
|
||||
// `on_voice_call_closed` should be called when the connection is ended.
|
||||
// The inner logic of `on_voice_call_closed` will check if the voice call is active.
|
||||
// Only one client is considered here for now.
|
||||
gFFI.chatModel.onVoiceCallClosed("End connetion");
|
||||
}
|
||||
|
||||
// to-do: It should be better to use transparent color instead of the bgColor.
|
||||
|
|
|
|||
|
|
@ -535,6 +535,8 @@ class ChatModel with ChangeNotifier {
|
|||
void onVoiceCallClosed(String reason) {
|
||||
_voiceCallStatus.value = VoiceCallStatus.notStarted;
|
||||
if (isAndroid) {
|
||||
// We can always invoke "on_voice_call_closed"
|
||||
// no matter if the `_voiceCallStatus` was `VoiceCallStatus.notStarted` or not.
|
||||
parent.target?.invokeMethod("on_voice_call_closed");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue