mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
feat: Add permission check to camera and audio
This commit is contained in:
parent
22876c3be5
commit
7f757f46f3
@ -1,5 +1,6 @@
|
||||
package app.myzel394.alibi.ui.components.RecorderScreen.molecules
|
||||
|
||||
import android.Manifest
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.gestures.awaitEachGesture
|
||||
@ -16,6 +17,7 @@ import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.CameraAlt
|
||||
import androidx.compose.material.icons.filled.Mic
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
@ -23,6 +25,7 @@ import androidx.compose.material3.ModalBottomSheet
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.rememberModalBottomSheetState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||
import androidx.compose.ui.Modifier
|
||||
@ -41,6 +44,7 @@ import app.myzel394.alibi.R
|
||||
import app.myzel394.alibi.ui.BIG_PRIMARY_BUTTON_SIZE
|
||||
import app.myzel394.alibi.ui.components.RecorderScreen.atoms.CameraPreview
|
||||
import app.myzel394.alibi.ui.components.atoms.GlobalSwitch
|
||||
import app.myzel394.alibi.ui.components.atoms.PermissionRequester
|
||||
import app.myzel394.alibi.ui.models.VideoRecorderSettingsModel
|
||||
import app.myzel394.alibi.ui.utils.CameraInfo
|
||||
|
||||
@ -61,6 +65,10 @@ fun VideoRecorderPreparationSheet(
|
||||
val context = LocalContext.current
|
||||
val cameras = CameraInfo.queryAvailableCameras(context)
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
videoSettings.init(context)
|
||||
}
|
||||
|
||||
if (showPreview)
|
||||
CameraPreview(
|
||||
modifier = Modifier
|
||||
@ -95,13 +103,21 @@ fun VideoRecorderPreparationSheet(
|
||||
style = MaterialTheme.typography.labelLarge,
|
||||
)
|
||||
}
|
||||
GlobalSwitch(
|
||||
label = stringResource(R.string.ui_videoRecorder_action_start_settings_enableAudio_label),
|
||||
checked = videoSettings.enableAudio,
|
||||
onCheckedChange = {
|
||||
videoSettings.enableAudio = it
|
||||
}
|
||||
)
|
||||
PermissionRequester(
|
||||
permission = Manifest.permission.RECORD_AUDIO,
|
||||
icon = Icons.Default.Mic,
|
||||
onPermissionAvailable = {
|
||||
videoSettings.enableAudio = !videoSettings.enableAudio
|
||||
},
|
||||
) { trigger ->
|
||||
GlobalSwitch(
|
||||
label = stringResource(R.string.ui_videoRecorder_action_start_settings_enableAudio_label),
|
||||
checked = videoSettings.enableAudio,
|
||||
onCheckedChange = {
|
||||
trigger()
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Text(
|
||||
stringResource(R.string.ui_videoRecorder_action_start_settings_cameraLens_selection_label),
|
||||
|
@ -58,8 +58,8 @@ fun VideoRecordingStart(
|
||||
}
|
||||
|
||||
PermissionRequester(
|
||||
permission = Manifest.permission.RECORD_AUDIO,
|
||||
icon = Icons.Default.Mic,
|
||||
permission = Manifest.permission.CAMERA,
|
||||
icon = Icons.Default.CameraAlt,
|
||||
onPermissionAvailable = {
|
||||
showSheet = true
|
||||
},
|
||||
|
@ -1,5 +1,8 @@
|
||||
package app.myzel394.alibi.ui.models
|
||||
|
||||
import android.Manifest
|
||||
import android.Manifest.permission.RECORD_AUDIO
|
||||
import android.content.Context
|
||||
import android.graphics.Camera
|
||||
import android.hardware.camera2.CameraManager
|
||||
import androidx.camera.core.CameraSelector
|
||||
@ -8,8 +11,14 @@ import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.lifecycle.ViewModel
|
||||
import app.myzel394.alibi.ui.utils.PermissionHelper
|
||||
|
||||
class VideoRecorderSettingsModel : ViewModel() {
|
||||
var enableAudio by mutableStateOf(true)
|
||||
var cameraID by mutableIntStateOf(0)
|
||||
var cameraID by mutableIntStateOf(CameraSelector.LENS_FACING_BACK)
|
||||
|
||||
fun init(context: Context) {
|
||||
enableAudio = PermissionHelper.hasGranted(context, Manifest.permission.RECORD_AUDIO)
|
||||
cameraID = CameraSelector.LENS_FACING_BACK
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user