package
com.example.newcanaryproject
import
android.content.Context
import
android.hardware.Sensor
import
android.hardware.SensorEvent
import
android.hardware.SensorEventListener
import
android.hardware.SensorManager
import
android.os.Bundle
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.*
import
androidx.compose.foundation.layout.*
import
androidx.compose.foundation.lazy.GridCells
import
androidx.compose.foundation.lazy.LazyColumn
import
androidx.compose.foundation.lazy.LazyVerticalGrid
import
androidx.compose.foundation.lazy.itemsIndexed
import
androidx.compose.foundation.shape.RoundedCornerShape
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.layout.Layout
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.res.painterResource
import
androidx.compose.ui.text.font.FontFamily
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
coil.compose.rememberAsyncImagePainter
import
com.example.newcanaryproject.ui.theme.*
import
java.util.*
class
MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
NewCanaryProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"Proximity Sensor Example"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
}
)
}
) {
ProximitySensor()
}
}
}
}
}
}
@Composable
fun ProximitySensor() {
val ctx = LocalContext.current
val sensorManager: SensorManager = ctx.getSystemService(Context.SENSOR_SERVICE) as SensorManager
val proximitySensor: Sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)
val sensorStatus = remember {
mutableStateOf(
""
)
}
val proximitySensorEventListener = object : SensorEventListener {
override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
}
override fun onSensorChanged(event: SensorEvent) {
if
(event.sensor.type == Sensor.TYPE_PROXIMITY) {
if
(event.values[
0
] == 0f) {
sensorStatus.value =
"Near"
}
else
{
sensorStatus.value =
"Away"
}
}
}
}
sensorManager.registerListener(
proximitySensorEventListener,
proximitySensor,
SensorManager.SENSOR_DELAY_NORMAL
)
Column(
modifier = Modifier
.fillMaxSize()
.fillMaxHeight()
.fillMaxWidth()
.padding(
5
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Text(
text =
"Object is"
,
color = Color.Black,
fontWeight = FontWeight.Bold,
fontFamily = FontFamily.Default,
fontSize =
40
.sp, modifier = Modifier.padding(
5
.dp)
)
Text(
text = sensorStatus.value,
color = Color.Black,
fontWeight = FontWeight.Bold,
fontFamily = FontFamily.Default,
fontSize =
40
.sp, modifier = Modifier.padding(
5
.dp)
)
Text(
text =
"Sensor"
,
color = Color.Black,
fontWeight = FontWeight.Bold,
fontFamily = FontFamily.Default,
fontSize =
40
.sp, modifier = Modifier.padding(
5
.dp)
)
}
}