Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.flashlightpro
- import android.hardware.camera2.CameraManager
- import android.os.Bundle
- import androidx.activity.ComponentActivity
- import androidx.activity.OnBackPressedCallback
- import androidx.activity.compose.setContent
- import androidx.compose.foundation.layout.Arrangement
- import androidx.compose.foundation.layout.Column
- import androidx.compose.foundation.layout.fillMaxSize
- import androidx.compose.foundation.layout.fillMaxWidth
- import androidx.compose.foundation.layout.padding
- import androidx.compose.material3.Button
- import androidx.compose.material3.Slider
- import androidx.compose.material3.Text
- import androidx.compose.runtime.Composable
- import androidx.compose.runtime.getValue
- import androidx.compose.runtime.mutableStateOf
- import androidx.compose.runtime.remember
- import androidx.compose.runtime.setValue
- import androidx.compose.ui.Alignment
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.res.stringResource
- import androidx.compose.ui.tooling.preview.Preview
- import androidx.compose.ui.unit.dp
- import com.example.flashlightpro.controller.FlashlightController
- import com.example.flashlightpro.features.StrobeLightFeature
- class MainActivity : ComponentActivity() {
- private lateinit var flashlightController: FlashlightController
- private var isBlinking = false
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- val cameraManager = getSystemService(CAMERA_SERVICE) as CameraManager
- val cameraId = cameraManager.cameraIdList[0]
- val strobeLightFeature = StrobeLightFeature(cameraManager, cameraId)
- flashlightController = FlashlightController(strobeLightFeature)
- onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
- override fun handleOnBackPressed() {
- if (isBlinking) {
- flashlightController.stopBlinking()
- }
- finish()
- }
- })
- setContent {
- MyComposeUI(
- onBlinkStartStop = {
- isBlinking = !isBlinking
- if (isBlinking) {
- flashlightController.startBlinking(0.5f)
- } else {
- flashlightController.stopBlinking()
- }
- },
- onSpeedChange = { speed: Float ->
- if (isBlinking) {
- flashlightController.startBlinking(speed)
- }
- },
- isBlinking = isBlinking
- )
- }
- }
- @Composable
- fun MyComposeUI(
- onBlinkStartStop: () -> Unit,
- onSpeedChange: (Float) -> Unit,
- isBlinking: Boolean
- ) {
- //var buttonText by remember { mutableStateOf("") }
- var buttonText by remember { mutableStateOf("") }
- //buttonText = stringResource(R.string.start_blinking)
- buttonText = if (isBlinking) {
- stringResource(R.string.stop_blinking)
- } else {
- stringResource(R.string.start_blinking)
- }
- var sliderPosition by remember { mutableStateOf(0.5f) }
- Column(
- modifier = Modifier
- .fillMaxSize()
- .padding(16.dp),
- verticalArrangement = Arrangement.SpaceBetween
- ) {
- Text(
- text = stringResource(R.string.app_name),
- modifier = Modifier.align(Alignment.CenterHorizontally)
- )
- Button(
- onClick = onBlinkStartStop,
- modifier = Modifier.align(Alignment.CenterHorizontally)
- ) {
- Text(text = buttonText)
- }
- Slider(
- value = sliderPosition,
- onValueChange = { value ->
- sliderPosition = value
- onSpeedChange(value)
- },
- modifier = Modifier
- .fillMaxWidth()
- .padding(top = 16.dp)
- )
- }
- }
- // This is the preview Composable with no parameters
- @Preview(showBackground = true)
- @Composable
- fun PreviewMyComposeUI() {
- MyComposeUI(
- onBlinkStartStop = {},
- onSpeedChange = {},
- isBlinking = false
- )
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment