Chocolade19721309

Untitled

Aug 20th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. package com.example.flashlightpro
  2.  
  3. import android.hardware.camera2.CameraManager
  4. import android.os.Bundle
  5. import androidx.activity.ComponentActivity
  6. import androidx.activity.OnBackPressedCallback
  7. import androidx.activity.compose.setContent
  8. import androidx.compose.foundation.layout.Arrangement
  9. import androidx.compose.foundation.layout.Column
  10. import androidx.compose.foundation.layout.fillMaxSize
  11. import androidx.compose.foundation.layout.fillMaxWidth
  12. import androidx.compose.foundation.layout.padding
  13. import androidx.compose.material3.Button
  14. import androidx.compose.material3.Slider
  15. import androidx.compose.material3.Text
  16. import androidx.compose.runtime.Composable
  17. import androidx.compose.runtime.getValue
  18. import androidx.compose.runtime.mutableStateOf
  19. import androidx.compose.runtime.remember
  20. import androidx.compose.runtime.setValue
  21. import androidx.compose.ui.Alignment
  22. import androidx.compose.ui.Modifier
  23. import androidx.compose.ui.res.stringResource
  24. import androidx.compose.ui.tooling.preview.Preview
  25. import androidx.compose.ui.unit.dp
  26. import com.example.flashlightpro.controller.FlashlightController
  27. import com.example.flashlightpro.features.StrobeLightFeature
  28.  
  29. class MainActivity : ComponentActivity() {
  30.  
  31. private lateinit var flashlightController: FlashlightController
  32. private var isBlinking = false
  33.  
  34. override fun onCreate(savedInstanceState: Bundle?) {
  35. super.onCreate(savedInstanceState)
  36.  
  37. val cameraManager = getSystemService(CAMERA_SERVICE) as CameraManager
  38. val cameraId = cameraManager.cameraIdList[0]
  39.  
  40. val strobeLightFeature = StrobeLightFeature(cameraManager, cameraId)
  41. flashlightController = FlashlightController(strobeLightFeature)
  42.  
  43. onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
  44. override fun handleOnBackPressed() {
  45. if (isBlinking) {
  46. flashlightController.stopBlinking()
  47. }
  48. finish()
  49. }
  50. })
  51.  
  52. setContent {
  53. MyComposeUI(
  54. onBlinkStartStop = {
  55. isBlinking = !isBlinking
  56. if (isBlinking) {
  57. flashlightController.startBlinking(0.5f)
  58. } else {
  59. flashlightController.stopBlinking()
  60. }
  61. },
  62. onSpeedChange = { speed: Float ->
  63. if (isBlinking) {
  64. flashlightController.startBlinking(speed)
  65. }
  66. },
  67. isBlinking = isBlinking
  68. )
  69. }
  70. }
  71.  
  72. @Composable
  73. fun MyComposeUI(
  74. onBlinkStartStop: () -> Unit,
  75. onSpeedChange: (Float) -> Unit,
  76. isBlinking: Boolean
  77. ) {
  78. //var buttonText by remember { mutableStateOf("") }
  79. var buttonText by remember { mutableStateOf("") }
  80. //buttonText = stringResource(R.string.start_blinking)
  81.  
  82. buttonText = if (isBlinking) {
  83. stringResource(R.string.stop_blinking)
  84. } else {
  85. stringResource(R.string.start_blinking)
  86. }
  87.  
  88. var sliderPosition by remember { mutableStateOf(0.5f) }
  89.  
  90. Column(
  91. modifier = Modifier
  92. .fillMaxSize()
  93. .padding(16.dp),
  94. verticalArrangement = Arrangement.SpaceBetween
  95. ) {
  96. Text(
  97. text = stringResource(R.string.app_name),
  98. modifier = Modifier.align(Alignment.CenterHorizontally)
  99. )
  100.  
  101. Button(
  102. onClick = onBlinkStartStop,
  103. modifier = Modifier.align(Alignment.CenterHorizontally)
  104. ) {
  105. Text(text = buttonText)
  106. }
  107.  
  108. Slider(
  109. value = sliderPosition,
  110. onValueChange = { value ->
  111. sliderPosition = value
  112. onSpeedChange(value)
  113. },
  114. modifier = Modifier
  115. .fillMaxWidth()
  116. .padding(top = 16.dp)
  117. )
  118. }
  119. }
  120.  
  121. // This is the preview Composable with no parameters
  122. @Preview(showBackground = true)
  123. @Composable
  124. fun PreviewMyComposeUI() {
  125. MyComposeUI(
  126. onBlinkStartStop = {},
  127. onSpeedChange = {},
  128. isBlinking = false
  129. )
  130. }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment