Fixed camera not turning on during call when granting permission + minor UI fix for history detail while in landscape

This commit is contained in:
Sylvain Berfini 2021-11-16 10:21:29 +01:00
parent 07b37f03f6
commit f0b455eb8f
4 changed files with 39 additions and 9 deletions

View file

@ -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, this,
{ {
it.consume { permission -> it.consume { permission ->

View file

@ -113,7 +113,7 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
it.consume { it.consume {
if (!PermissionHelper.get().hasWriteExternalStoragePermission()) { if (!PermissionHelper.get().hasWriteExternalStoragePermission()) {
Log.i("[Controls Fragment] Asking for WRITE_EXTERNAL_STORAGE permission") 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<CallControlsFragmentBinding>() {
} }
) )
controlsViewModel.askPermissionEvent.observe( controlsViewModel.askAudioRecordPermissionEvent.observe(
viewLifecycleOwner, viewLifecycleOwner,
{ {
it.consume { permission -> it.consume { permission ->
@ -189,6 +189,16 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
} }
) )
controlsViewModel.askCameraPermissionEvent.observe(
viewLifecycleOwner,
{
it.consume { permission ->
Log.i("[Controls Fragment] Asking for $permission permission")
requestPermissions(arrayOf(permission), 1)
}
}
)
controlsViewModel.toggleNumpadEvent.observe( controlsViewModel.toggleNumpadEvent.observe(
viewLifecycleOwner, viewLifecycleOwner,
{ {
@ -251,7 +261,13 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
} }
} }
} }
} 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() callsViewModel.takeScreenshot()
} }
super.onRequestPermissionsResult(requestCode, permissions, grantResults) super.onRequestPermissionsResult(requestCode, permissions, grantResults)

View file

@ -87,7 +87,11 @@ class ControlsViewModel : ViewModel() {
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val askPermissionEvent: MutableLiveData<Event<String>> by lazy { val askAudioRecordPermissionEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>()
}
val askCameraPermissionEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>() MutableLiveData<Event<String>>()
} }
@ -176,7 +180,7 @@ class ControlsViewModel : ViewModel() {
} }
if (coreContext.isVideoCallOrConferenceActive() && !PermissionHelper.get().hasCameraPermission()) { if (coreContext.isVideoCallOrConferenceActive() && !PermissionHelper.get().hasCameraPermission()) {
askPermissionEvent.value = Event(Manifest.permission.CAMERA) askCameraPermissionEvent.value = Event(Manifest.permission.CAMERA)
} }
updateUI() updateUI()
@ -244,7 +248,7 @@ class ControlsViewModel : ViewModel() {
fun toggleMuteMicrophone() { fun toggleMuteMicrophone() {
if (!PermissionHelper.get().hasRecordAudioPermission()) { if (!PermissionHelper.get().hasRecordAudioPermission()) {
askPermissionEvent.value = Event(Manifest.permission.RECORD_AUDIO) askAudioRecordPermissionEvent.value = Event(Manifest.permission.RECORD_AUDIO)
return return
} }
@ -279,7 +283,7 @@ class ControlsViewModel : ViewModel() {
fun toggleVideo() { fun toggleVideo() {
if (!PermissionHelper.get().hasCameraPermission()) { if (!PermissionHelper.get().hasCameraPermission()) {
askPermissionEvent.value = Event(Manifest.permission.CAMERA) askCameraPermissionEvent.value = Event(Manifest.permission.CAMERA)
return return
} }

View file

@ -80,7 +80,7 @@
android:layout_below="@id/top_bar" android:layout_below="@id/top_bar"
android:gravity="center" android:gravity="center"
android:orientation="vertical" android:orientation="vertical"
android:paddingTop="20dp" android:paddingTop="10dp"
android:paddingBottom="5dp"> android:paddingBottom="5dp">
<org.linphone.contact.BigContactAvatarView <org.linphone.contact.BigContactAvatarView
@ -88,6 +88,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dp"
android:gravity="center" android:gravity="center"
android:layout_marginTop="10dp"
bind:layout="@layout/contact_avatar_big" bind:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/> app:viewModel="@{viewModel}"/>