package
com.example.newcanaryproject
import
android.app.Activity
import
android.app.NotificationManager
import
android.content.Context
import
android.content.Intent
import
android.graphics.Typeface
import
android.media.AudioManager
import
android.os.Bundle
import
android.provider.Settings
import
android.speech.RecognizerIntent
import
android.speech.SpeechRecognizer
import
android.util.Log
import
android.view.ViewGroup
import
android.widget.LinearLayout
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.annotation.Dimension.DP
import
androidx.compose.animation.Crossfade
import
androidx.compose.animation.core.animateFloatAsState
import
androidx.compose.animation.core.tween
import
androidx.compose.foundation.Image
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.material.icons.Icons
import
androidx.compose.material.icons.filled.Mic
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.graphics.toArgb
import
androidx.compose.ui.layout.layoutId
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.res.dimensionResource
import
androidx.compose.ui.res.painterResource
import
androidx.compose.ui.text.TextStyle
import
androidx.compose.ui.text.font.FontFamily
import
androidx.compose.ui.text.font.FontStyle
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.*
import
androidx.compose.ui.viewinterop.AndroidView
import
androidx.constraintlayout.compose.ConstraintSet
import
androidx.constraintlayout.compose.MotionLayout
import
androidx.core.content.ContextCompat.getSystemService
import
androidx.core.content.ContextCompat.startActivity
import
com.example.newcanaryproject.ui.theme.*
import
com.github.mikephil.charting.charts.PieChart
import
com.github.mikephil.charting.components.Description
import
com.github.mikephil.charting.components.Legend
import
com.github.mikephil.charting.data.PieData
import
com.github.mikephil.charting.data.PieDataSet
import
com.github.mikephil.charting.data.PieEntry
import
org.intellij.lang.annotations.JdkConstants.HorizontalAlignment
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 =
"Audio Manager Example"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
}
)
}
) {
AudioManagerUI()
}
}
}
}
}
}
@OptIn
(ExperimentalUnitApi::
class
)
@Composable
fun AudioManagerUI() {
lateinit var audioManager: AudioManager
var currentAudioMode =
0
var currentModeString = remember {
mutableStateOf(
""
)
}
var ctx = LocalContext.current
audioManager = ctx.getSystemService(Context.AUDIO_SERVICE) as AudioManager
currentAudioMode = audioManager.ringerMode;
when (currentAudioMode) {
AudioManager.RINGER_MODE_NORMAL -> currentModeString.value =
"Ringer Mode"
AudioManager.RINGER_MODE_SILENT -> currentModeString.value =
"Silent Mode"
AudioManager.RINGER_MODE_VIBRATE -> currentModeString.value =
"Vibrate Mode"
else
-> currentModeString.value =
"Fail to get mode"
}
Column(
modifier = Modifier
.fillMaxWidth()
.fillMaxHeight(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text =
"Ringtone Manager Application"
,
color = greenColor,
fontSize = TextUnit(value = 18F, type = TextUnitType.Sp)
)
Spacer(modifier = Modifier.height(
20
.dp))
Text(
text = currentModeString.value,
color = greenColor,
fontSize = TextUnit(value = 18F, type = TextUnitType.Sp)
)
Spacer(modifier = Modifier.height(
20
.dp))
Button(
modifier = Modifier.width(
200
.dp),
onClick = {
audioManager.ringerMode = AudioManager.RINGER_MODE_VIBRATE
Toast.makeText(ctx,
"Vibrate mode activated.."
, Toast.LENGTH_LONG).show()
currentModeString.value =
"Vibrate Mode Activated"
},
colors = ButtonDefaults.buttonColors(backgroundColor = greenColor)
) {
Text(text =
"Vibrate Mode"
, color = Color.White)
}
Spacer(modifier = Modifier.height(
20
.dp))
Button(
modifier = Modifier.width(
200
.dp),
onClick = {
val notificationManager: NotificationManager =
ctx.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if
(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && !notificationManager.isNotificationPolicyAccessGranted) {
val intent = Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS)
startActivity(ctx, intent,
null
)
}
else
{
Log.e(
"tag"
,
"Audio Manager not accessible.."
)
audioManager.ringerMode = AudioManager.RINGER_MODE_SILENT
Toast.makeText(ctx,
"Silent Mode activated.."
, Toast.LENGTH_SHORT)
.show()
currentModeString.value =
"Silent Mode Activated.."
}
},
colors = ButtonDefaults.buttonColors(backgroundColor = greenColor)
) {
Text(text =
"Silent Mode"
, color = Color.White)
}
Spacer(modifier = Modifier.height(
20
.dp))
Button(
modifier = Modifier.width(
200
.dp),
onClick = {
audioManager.ringerMode = AudioManager.RINGER_MODE_NORMAL
Toast.makeText(ctx,
"Ringer Mode activated.."
, Toast.LENGTH_SHORT).show()
currentModeString.value =
"Ringtone Mode Activated.."
},
colors = ButtonDefaults.buttonColors(backgroundColor = greenColor)
) {
Text(text =
"Ringer Mode"
, color = Color.White)
}
}
}