package
com.example.newcanaryproject
import
android.content.Context
import
android.content.Intent
import
android.content.IntentFilter
import
android.os.Build
import
android.os.Bundle
import
android.text.style.TextAppearanceSpan
import
android.util.Log
import
android.view.View
import
android.widget.TextView
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.annotation.RequiresApi
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.Composable
import
androidx.compose.runtime.mutableStateOf
import
androidx.compose.runtime.remember
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.font.Typeface
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
androidx.core.content.res.ResourcesCompat
import
com.example.newcanaryproject.ui.theme.NewCanaryProjectTheme
import
com.example.newcanaryproject.ui.theme.greenColor
import
org.w3c.dom.Text
class
MainActivity : ComponentActivity() {
@RequiresApi
(Build.VERSION_CODES.M)
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 =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
dockState(context = LocalContext.current)
}
}
}
}
}
}
@RequiresApi
(Build.VERSION_CODES.M)
@Composable
fun dockState(context: Context) {
val dockValue = remember {
mutableStateOf(
""
)
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(all =
30
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Text(
text =
"Current Dock State in Android"
,
color = greenColor,
fontSize =
20
.sp,
fontWeight = FontWeight.Bold
)
Spacer(modifier = Modifier.height(
10
.dp))
val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
context.registerReceiver(
null
, ifilter)
}
val dockState: Int = dockStatus?.getIntExtra(Intent.EXTRA_DOCK_STATE, -
1
) ?: -
1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
val isCar: Boolean = dockState == Intent.EXTRA_DOCK_STATE_CAR
val isDesk: Boolean = dockState == Intent.EXTRA_DOCK_STATE_DESK
|| dockState == Intent.EXTRA_DOCK_STATE_LE_DESK
|| dockState == Intent.EXTRA_DOCK_STATE_HE_DESK
when {
isCar -> dockValue.value =
"Dock Car"
isDesk -> dockValue.value =
"Dock Desk"
!isDocked -> dockValue.value =
"Not Docked"
}
Text(
text = dockValue.value,
color = greenColor,
fontSize =
20
.sp,
fontWeight = FontWeight.Bold
)
}
}