mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 03:59:35 +01:00
fix no sound after mic permission granted
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
7e609d80c0
commit
fbad489ecb
@ -317,9 +317,7 @@ class CallActivity : CallBaseActivity() {
|
|||||||
val audioPermission = permissionMap[Manifest.permission.RECORD_AUDIO]
|
val audioPermission = permissionMap[Manifest.permission.RECORD_AUDIO]
|
||||||
if (audioPermission != null) {
|
if (audioPermission != null) {
|
||||||
if (java.lang.Boolean.TRUE == audioPermission) {
|
if (java.lang.Boolean.TRUE == audioPermission) {
|
||||||
if (!microphoneOn) {
|
Log.d(TAG, "Microphone permission was granted")
|
||||||
onMicrophoneClick()
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
rationaleList.add(resources.getString(R.string.nc_microphone_permission_hint))
|
rationaleList.add(resources.getString(R.string.nc_microphone_permission_hint))
|
||||||
}
|
}
|
||||||
@ -327,15 +325,7 @@ class CallActivity : CallBaseActivity() {
|
|||||||
val cameraPermission = permissionMap[Manifest.permission.CAMERA]
|
val cameraPermission = permissionMap[Manifest.permission.CAMERA]
|
||||||
if (cameraPermission != null) {
|
if (cameraPermission != null) {
|
||||||
if (java.lang.Boolean.TRUE == cameraPermission) {
|
if (java.lang.Boolean.TRUE == cameraPermission) {
|
||||||
if (!videoOn) {
|
Log.d(TAG, "Camera permission was granted")
|
||||||
onCameraClick()
|
|
||||||
}
|
|
||||||
if (cameraEnumerator!!.deviceNames.isEmpty()) {
|
|
||||||
binding!!.cameraButton.visibility = View.GONE
|
|
||||||
}
|
|
||||||
if (cameraEnumerator!!.deviceNames.size > 1) {
|
|
||||||
binding!!.switchSelfVideoButton.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
rationaleList.add(resources.getString(R.string.nc_camera_permission_hint))
|
rationaleList.add(resources.getString(R.string.nc_camera_permission_hint))
|
||||||
}
|
}
|
||||||
@ -357,6 +347,10 @@ class CallActivity : CallBaseActivity() {
|
|||||||
if (rationaleList.isNotEmpty()) {
|
if (rationaleList.isNotEmpty()) {
|
||||||
showRationaleDialogForSettings(rationaleList)
|
showRationaleDialogForSettings(rationaleList)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isConnectionEstablished) {
|
||||||
|
prepareCall()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private var canPublishAudioStream = false
|
private var canPublishAudioStream = false
|
||||||
private var canPublishVideoStream = false
|
private var canPublishVideoStream = false
|
||||||
@ -404,14 +398,11 @@ class CallActivity : CallBaseActivity() {
|
|||||||
.setDuration(PULSE_ANIMATION_DURATION)
|
.setDuration(PULSE_ANIMATION_DURATION)
|
||||||
.setRepeatCount(PulseAnimation.INFINITE)
|
.setRepeatCount(PulseAnimation.INFINITE)
|
||||||
.setRepeatMode(PulseAnimation.REVERSE)
|
.setRepeatMode(PulseAnimation.REVERSE)
|
||||||
basicInitialization()
|
|
||||||
callParticipants = HashMap()
|
callParticipants = HashMap()
|
||||||
participantDisplayItems = HashMap()
|
participantDisplayItems = HashMap()
|
||||||
initViews()
|
|
||||||
updateSelfVideoViewPosition()
|
|
||||||
reactionAnimator = ReactionAnimator(context, binding!!.reactionAnimationWrapper, viewThemeUtils)
|
reactionAnimator = ReactionAnimator(context, binding!!.reactionAnimationWrapper, viewThemeUtils)
|
||||||
|
|
||||||
checkRecordingConsentAndInitiateCall()
|
checkInitialDevicePermissions()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initCallRecordingViewModel(recordingState: Int) {
|
private fun initCallRecordingViewModel(recordingState: Int) {
|
||||||
@ -877,7 +868,6 @@ class CallActivity : CallBaseActivity() {
|
|||||||
private fun initViews() {
|
private fun initViews() {
|
||||||
Log.d(TAG, "initViews")
|
Log.d(TAG, "initViews")
|
||||||
binding!!.callInfosLinearLayout.visibility = View.VISIBLE
|
binding!!.callInfosLinearLayout.visibility = View.VISIBLE
|
||||||
binding!!.selfVideoViewWrapper.visibility = View.VISIBLE
|
|
||||||
if (!isPipModePossible) {
|
if (!isPipModePossible) {
|
||||||
binding!!.pictureInPictureButton.visibility = View.GONE
|
binding!!.pictureInPictureButton.visibility = View.GONE
|
||||||
}
|
}
|
||||||
@ -995,13 +985,11 @@ class CallActivity : CallBaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkDevicePermissions() {
|
private fun checkInitialDevicePermissions() {
|
||||||
val permissionsToRequest: MutableList<String> = ArrayList()
|
val permissionsToRequest: MutableList<String> = ArrayList()
|
||||||
val rationaleList: MutableList<String> = ArrayList()
|
val rationaleList: MutableList<String> = ArrayList()
|
||||||
if (permissionUtil!!.isMicrophonePermissionGranted()) {
|
if (permissionUtil!!.isMicrophonePermissionGranted()) {
|
||||||
if (!microphoneOn) {
|
Log.d(TAG, "Microphone permission already granted")
|
||||||
onMicrophoneClick()
|
|
||||||
}
|
|
||||||
} else if (shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)) {
|
} else if (shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)) {
|
||||||
permissionsToRequest.add(Manifest.permission.RECORD_AUDIO)
|
permissionsToRequest.add(Manifest.permission.RECORD_AUDIO)
|
||||||
rationaleList.add(resources.getString(R.string.nc_microphone_permission_hint))
|
rationaleList.add(resources.getString(R.string.nc_microphone_permission_hint))
|
||||||
@ -1011,15 +999,7 @@ class CallActivity : CallBaseActivity() {
|
|||||||
|
|
||||||
if (!isVoiceOnlyCall) {
|
if (!isVoiceOnlyCall) {
|
||||||
if (permissionUtil!!.isCameraPermissionGranted()) {
|
if (permissionUtil!!.isCameraPermissionGranted()) {
|
||||||
if (!videoOn) {
|
Log.d(TAG, "Camera permission already granted")
|
||||||
onCameraClick()
|
|
||||||
}
|
|
||||||
if (cameraEnumerator!!.deviceNames.isEmpty()) {
|
|
||||||
binding!!.cameraButton.visibility = View.GONE
|
|
||||||
}
|
|
||||||
if (cameraEnumerator!!.deviceNames.size > 1) {
|
|
||||||
binding!!.switchSelfVideoButton.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
} else if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
|
} else if (shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)) {
|
||||||
permissionsToRequest.add(Manifest.permission.CAMERA)
|
permissionsToRequest.add(Manifest.permission.CAMERA)
|
||||||
rationaleList.add(resources.getString(R.string.nc_camera_permission_hint))
|
rationaleList.add(resources.getString(R.string.nc_camera_permission_hint))
|
||||||
@ -1037,16 +1017,41 @@ class CallActivity : CallBaseActivity() {
|
|||||||
permissionsToRequest.add(Manifest.permission.BLUETOOTH_CONNECT)
|
permissionsToRequest.add(Manifest.permission.BLUETOOTH_CONNECT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (permissionsToRequest.isNotEmpty()) {
|
if (permissionsToRequest.isNotEmpty()) {
|
||||||
if (rationaleList.isNotEmpty()) {
|
if (rationaleList.isNotEmpty()) {
|
||||||
showRationaleDialog(permissionsToRequest, rationaleList)
|
showRationaleDialog(permissionsToRequest, rationaleList)
|
||||||
} else {
|
} else {
|
||||||
requestPermissionLauncher.launch(permissionsToRequest.toTypedArray())
|
requestPermissionLauncher.launch(permissionsToRequest.toTypedArray())
|
||||||
}
|
}
|
||||||
|
} else if (!isConnectionEstablished) {
|
||||||
|
prepareCall()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun prepareCall() {
|
||||||
|
basicInitialization()
|
||||||
|
initViews()
|
||||||
|
updateSelfVideoViewPosition()
|
||||||
|
checkRecordingConsentAndInitiateCall()
|
||||||
|
|
||||||
|
if (permissionUtil!!.isMicrophonePermissionGranted()) {
|
||||||
|
if (!microphoneOn) {
|
||||||
|
onMicrophoneClick()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isConnectionEstablished) {
|
if (isVoiceOnlyCall) {
|
||||||
fetchSignalingSettings()
|
binding!!.selfVideoViewWrapper.visibility = View.GONE
|
||||||
|
} else if (permissionUtil!!.isCameraPermissionGranted()) {
|
||||||
|
binding!!.selfVideoViewWrapper.visibility = View.VISIBLE
|
||||||
|
onCameraClick()
|
||||||
|
if (cameraEnumerator!!.deviceNames.isEmpty()) {
|
||||||
|
binding!!.cameraButton.visibility = View.GONE
|
||||||
|
}
|
||||||
|
if (cameraEnumerator!!.deviceNames.size > 1) {
|
||||||
|
binding!!.switchSelfVideoButton.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1603,8 +1608,8 @@ class CallActivity : CallBaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onError(e: Throwable) {
|
override fun onError(e: Throwable) {
|
||||||
Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
|
||||||
Log.e(TAG, "Failed to fetch capabilities", e)
|
Log.e(TAG, "Failed to fetch capabilities", e)
|
||||||
|
Snackbar.make(binding!!.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
||||||
// unused atm
|
// unused atm
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1925,7 +1930,7 @@ class CallActivity : CallBaseActivity() {
|
|||||||
Log.d(TAG, "connection already established")
|
Log.d(TAG, "connection already established")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
checkDevicePermissions()
|
fetchSignalingSettings()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.BACKGROUND)
|
@Subscribe(threadMode = ThreadMode.BACKGROUND)
|
||||||
|
@ -46,7 +46,9 @@
|
|||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/selfVideoViewWrapper"
|
android:id="@+id/selfVideoViewWrapper"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:visibility="visible">
|
||||||
|
|
||||||
<org.webrtc.SurfaceViewRenderer
|
<org.webrtc.SurfaceViewRenderer
|
||||||
android:id="@+id/selfVideoRenderer"
|
android:id="@+id/selfVideoRenderer"
|
||||||
|
Loading…
Reference in New Issue
Block a user