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

View file

@ -113,7 +113,7 @@ class ControlsFragment : GenericFragment<CallControlsFragmentBinding>() {
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<CallControlsFragmentBinding>() {
}
)
controlsViewModel.askPermissionEvent.observe(
controlsViewModel.askAudioRecordPermissionEvent.observe(
viewLifecycleOwner,
{
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(
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()
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults)

View file

@ -87,7 +87,11 @@ class ControlsViewModel : ViewModel() {
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>>()
}
@ -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
}

View file

@ -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">
<org.linphone.contact.BigContactAvatarView
@ -88,6 +88,7 @@
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:layout_marginTop="10dp"
bind:layout="@layout/contact_avatar_big"
app:viewModel="@{viewModel}"/>