diff --git a/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt b/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt index e5b25322e..b4223f928 100644 --- a/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt +++ b/app/src/main/java/org/linphone/activities/call/OutgoingCallActivity.kt @@ -106,7 +106,16 @@ class OutgoingCallActivity : ProximitySensorActivity() { } ) - controlsViewModel.askPermissionEvent.observe( + controlsViewModel.askAudioRecordPermissionEvent.observe( + this, + { + it.consume { permission -> + requestPermissions(arrayOf(permission), 0) + } + } + ) + + controlsViewModel.askCameraPermissionEvent.observe( this, { it.consume { permission -> diff --git a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt index 859b47611..674b31ee8 100644 --- a/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt +++ b/app/src/main/java/org/linphone/activities/call/fragments/ControlsFragment.kt @@ -113,7 +113,7 @@ class ControlsFragment : GenericFragment() { it.consume { if (!PermissionHelper.get().hasWriteExternalStoragePermission()) { Log.i("[Controls Fragment] Asking for WRITE_EXTERNAL_STORAGE permission") - requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1) + requestPermissions(arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 2) } } } @@ -179,7 +179,7 @@ class ControlsFragment : GenericFragment() { } ) - controlsViewModel.askPermissionEvent.observe( + controlsViewModel.askAudioRecordPermissionEvent.observe( viewLifecycleOwner, { it.consume { permission -> @@ -189,6 +189,16 @@ class ControlsFragment : GenericFragment() { } ) + controlsViewModel.askCameraPermissionEvent.observe( + viewLifecycleOwner, + { + it.consume { permission -> + Log.i("[Controls Fragment] Asking for $permission permission") + requestPermissions(arrayOf(permission), 1) + } + } + ) + controlsViewModel.toggleNumpadEvent.observe( viewLifecycleOwner, { @@ -251,7 +261,13 @@ class ControlsFragment : GenericFragment() { } } } - } else if (requestCode == 1 && grantResults.isNotEmpty() && grantResults[0] == PERMISSION_GRANTED) { + } else if (requestCode == 1) { + if (grantResults.isNotEmpty() && grantResults[0] == PERMISSION_GRANTED) { + Log.i("[Controls Fragment] CAMERA permission has been granted") + coreContext.core.reloadVideoDevices() + controlsViewModel.toggleVideo() + } + } else if (requestCode == 2 && grantResults.isNotEmpty() && grantResults[0] == PERMISSION_GRANTED) { callsViewModel.takeScreenshot() } super.onRequestPermissionsResult(requestCode, permissions, grantResults) diff --git a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt index f74bb0471..33d7aac80 100644 --- a/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/call/viewmodels/ControlsViewModel.kt @@ -87,7 +87,11 @@ class ControlsViewModel : ViewModel() { MutableLiveData>() } - val askPermissionEvent: MutableLiveData> by lazy { + val askAudioRecordPermissionEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + + val askCameraPermissionEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -176,7 +180,7 @@ class ControlsViewModel : ViewModel() { } if (coreContext.isVideoCallOrConferenceActive() && !PermissionHelper.get().hasCameraPermission()) { - askPermissionEvent.value = Event(Manifest.permission.CAMERA) + askCameraPermissionEvent.value = Event(Manifest.permission.CAMERA) } updateUI() @@ -244,7 +248,7 @@ class ControlsViewModel : ViewModel() { fun toggleMuteMicrophone() { if (!PermissionHelper.get().hasRecordAudioPermission()) { - askPermissionEvent.value = Event(Manifest.permission.RECORD_AUDIO) + askAudioRecordPermissionEvent.value = Event(Manifest.permission.RECORD_AUDIO) return } @@ -279,7 +283,7 @@ class ControlsViewModel : ViewModel() { fun toggleVideo() { if (!PermissionHelper.get().hasCameraPermission()) { - askPermissionEvent.value = Event(Manifest.permission.CAMERA) + askCameraPermissionEvent.value = Event(Manifest.permission.CAMERA) return } diff --git a/app/src/main/res/layout/history_detail_fragment.xml b/app/src/main/res/layout/history_detail_fragment.xml index 4654fcd8e..951213347 100644 --- a/app/src/main/res/layout/history_detail_fragment.xml +++ b/app/src/main/res/layout/history_detail_fragment.xml @@ -80,7 +80,7 @@ android:layout_below="@id/top_bar" android:gravity="center" android:orientation="vertical" - android:paddingTop="20dp" + android:paddingTop="10dp" android:paddingBottom="5dp">