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.os.VibrationEffect
import
android.os.Vibrator
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
)
})
}) {
deviceVibrator(context = LocalContext.current)
}
}
}
}
}
}
@RequiresApi
(Build.VERSION_CODES.M)
@Composable
fun deviceVibrator(context: Context) {
Column(
modifier = Modifier
.fillMaxSize()
.padding(all =
30
.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
) {
Text(
text =
"Device Vibrator in Android"
,
color = greenColor,
fontSize =
20
.sp,
fontWeight = FontWeight.Bold
)
val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
val vibrationEffect1: VibrationEffect =
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
VibrationEffect.createOneShot(
1000
, VibrationEffect.DEFAULT_AMPLITUDE)
}
else
{
Log.e(
"TAG"
,
"Cannot vibrate device.."
)
TODO(
"VERSION.SDK_INT < O"
)
}
vibrator.cancel()
vibrator.vibrate(vibrationEffect1)
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Normal Vibration"
)
}
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
val vibrationEffect2: VibrationEffect
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
vibrationEffect2 =
VibrationEffect.createPredefined(VibrationEffect.EFFECT_CLICK)
vibrator.cancel()
vibrator.vibrate(vibrationEffect2)
}
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Click Vibration"
)
}
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val vibrationEffect3: VibrationEffect =
VibrationEffect.createPredefined(VibrationEffect.EFFECT_DOUBLE_CLICK)
vibrator.cancel()
vibrator.vibrate(vibrationEffect3)
}
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Double Click Vibration"
)
}
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val vibrationEffect4: VibrationEffect =
VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK)
vibrator.cancel()
vibrator.vibrate(vibrationEffect4)
}
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Tick Vibration"
)
}
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val vibrationEffect5: VibrationEffect =
VibrationEffect.createPredefined(VibrationEffect.EFFECT_HEAVY_CLICK)
vibrator.cancel()
vibrator.vibrate(vibrationEffect5)
}
},
modifier = Modifier
.fillMaxWidth()
.padding(
10
.dp)
) {
Text(text =
"Heavy Click Effect Vibration"
)
}
}
}