@@ -2,22 +2,21 @@ package com.foke.together.presenter.screen
22
33import android.graphics.Bitmap
44import android.graphics.Rect
5- import androidx.compose.foundation.clickable
5+ import androidx.compose.foundation.layout.Box
66import androidx.compose.foundation.layout.aspectRatio
77import androidx.compose.foundation.layout.fillMaxSize
8+ import androidx.compose.foundation.layout.height
9+ import androidx.compose.foundation.layout.padding
810import androidx.compose.material3.LinearProgressIndicator
911import androidx.compose.material3.MaterialTheme
1012import androidx.compose.material3.Surface
1113import androidx.compose.material3.Text
1214import androidx.compose.runtime.Composable
13- import androidx.compose.runtime.collectAsState
14- import androidx.compose.runtime.getValue
15- import androidx.compose.runtime.remember
1615import androidx.compose.ui.Modifier
1716import androidx.compose.ui.draw.drawWithContent
1817import androidx.compose.ui.graphics.layer.drawLayer
1918import androidx.compose.ui.graphics.rememberGraphicsLayer
20- import androidx.compose.ui.platform.LocalContext
19+ import androidx.compose.ui.res.stringResource
2120import androidx.compose.ui.text.font.FontWeight
2221import androidx.compose.ui.tooling.preview.Preview
2322import androidx.compose.ui.unit.dp
@@ -30,12 +29,12 @@ import com.longdo.mjpegviewer.MjpegView
3029import androidx.hilt.navigation.compose.hiltViewModel
3130import androidx.lifecycle.Lifecycle
3231import androidx.lifecycle.compose.LifecycleEventEffect
32+ import com.foke.together.presenter.R
3333import com.foke.together.presenter.viewmodel.CameraViewModel
3434import com.foke.together.util.AppLog
3535import com.foke.together.util.AppPolicy
3636import com.longdo.mjpegviewer.MjpegViewError
3737import com.longdo.mjpegviewer.MjpegViewStateChangeListener
38- import kotlinx.coroutines.flow.map
3938
4039@Composable
4140fun CameraScreen (
@@ -56,26 +55,34 @@ fun CameraScreen(
5655 LinearProgressIndicator (
5756 // TODO: progress State를 Flow로 구현하기
5857 progress = { viewModel.progressState },
59- modifier = Modifier .constrainAs(progress){
60- start.linkTo(parent.start, margin = 24 .dp)
61- end.linkTo(parent.end, margin = 24 .dp)
62- bottom.linkTo(title.top)
63- width = Dimension .fillToConstraints
64- height = Dimension .wrapContent
65- },
66- )
67- Text (
68- text = " 촬영시 움직이지마세요" ,
69- modifier = Modifier .constrainAs(title) {
70- top.linkTo(parent.top)
71- start.linkTo(parent.start)
72- end.linkTo(parent.end)
73- bottom.linkTo(preview.top)
74- },
75- fontWeight = FontWeight .Bold ,
76- fontSize = 24 .sp,
58+ modifier = Modifier
59+ .constrainAs(progress) {
60+ start.linkTo(parent.start, margin = 24 .dp)
61+ end.linkTo(parent.end, margin = 24 .dp)
62+ bottom.linkTo(title.top)
63+ width = Dimension .fillToConstraints
64+ height = Dimension .wrapContent
65+ }
66+ .height(30 .dp)
7767 )
7868
69+ Box (
70+ modifier = Modifier
71+ .constrainAs(title) {
72+ top.linkTo(parent.top)
73+ start.linkTo(parent.start)
74+ end.linkTo(parent.end)
75+ bottom.linkTo(preview.top)
76+ }
77+ .padding(top = 30 .dp),
78+ ) {
79+ Text (
80+ text = stringResource(id = R .string.camera_exclamation_text),
81+ fontWeight = FontWeight .Bold ,
82+ fontSize = 24 .sp,
83+ )
84+ }
85+
7986 AndroidView (
8087 modifier = Modifier
8188 .constrainAs(preview) {
@@ -101,19 +108,19 @@ fun CameraScreen(
101108 supportPinchZoomAndPan = false
102109 stateChangeListener = object : MjpegViewStateChangeListener {
103110 override fun onStreamDownloadStart () {
104- AppLog .d(TAG , " onStreamDownloadStart" )
111+ AppLog .d(TAG , " MjpegView " , " onStreamDownloadStart" )
105112 }
106113
107114 override fun onStreamDownloadStop () {
108- AppLog .d(TAG , " onStreamDownloadStop" )
115+ AppLog .d(TAG , " MjpegView " , " onStreamDownloadStop" )
109116 }
110117
111118 override fun onServerConnected () {
112- AppLog .d(TAG , " onServerConnected" )
119+ AppLog .d(TAG , " MjpegView " , " onServerConnected" )
113120 }
114121
115122 override fun onMeasurementChanged (rect : Rect ? ) {
116- AppLog .d(TAG , " onMeasurementChanged" )
123+ AppLog .d(TAG , " MjpegView " , " onMeasurementChanged" )
117124 }
118125
119126 override fun onNewFrame (image : Bitmap ? ) {
@@ -127,12 +134,10 @@ fun CameraScreen(
127134 }
128135
129136 override fun onError (error : MjpegViewError ? ) {
130- AppLog .d(TAG , " onError, ${error.toString() } " )
137+ AppLog .d(TAG , " MjpegView " , " onError, ${error?.cause ? : " unknown error " } " )
131138 }
132139 }
133- // test url
134- // TODO : change url in viewmodel
135- setUrl(" ${externalCameraIP} " )
140+ setUrl(externalCameraIP)
136141 }
137142 },
138143 ){
0 commit comments