Увеличьте или уменьшите громкость программно в Android с помощью Jetpack Compose
Много раз при создании приложения для Android, например, с помощью аудиоплеера, например музыкального проигрывателя. Мы должны добавить функциональность, чтобы добавить регулятор громкости для нашего медиаплеера в наше приложение. Так что мы можем контролировать громкость нашего медиаплеера. В этой статье мы рассмотрим, как программно настроить громкость телефона Android в Android с помощью Jetpack Compose.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». При выборе шаблона выберите «Пустая активность создания» . Если вы не найдете этот шаблон, попробуйте обновить Android Studio до последней версии. Мы продемонстрировали приложение на Kotlin, поэтому убедитесь, что вы выбрали Kotlin в качестве основного языка при создании нового проекта.
Шаг 2: Добавление нового цвета в файл Color.kt
Перейдите к приложению > java > имени пакета вашего приложения > ui.theme > файлу Color.kt и добавьте в него приведенный ниже код.
Kotlin
package com.example.newcanaryproject.ui.themeimport androidx.compose.ui.graphics.Colorval Purple200 = Color(0xFF0F9D58)val Purple500 = Color(0xFF0F9D58)val Purple700 = Color(0xFF3700B3)val Teal200 = Color(0xFF03DAC5)// on below line we are adding different colors.val greenColor = Color(0xFF0F9D58) |
Шаг 3: Работа с файлом MainActivity.kt
Перейдите к файлу MainActivity.kt и обратитесь к следующему коду. Ниже приведен код файла MainActivity.kt . Комментарии добавляются внутри кода, чтобы понять код более подробно.
Kotlin
package com.example.newcanaryprojectimport android.content.Contextimport android.content.Context.AUDIO_SERVICEimport android.media.AudioManagerimport android.os.Bundleimport android.util.Logimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.BorderStrokeimport androidx.compose.foundation.layout.*import androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.runtime.Composableimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.draw.clipimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.graphics.SolidColorimport androidx.compose.ui.platform.LocalContextimport androidx.compose.ui.text.font.FontWeightimport androidx.compose.ui.text.style.TextAlignimport androidx.compose.ui.unit.Dpimport androidx.compose.ui.unit.dpimport androidx.compose.ui.unit.spimport com.example.newcanaryproject.ui.theme.NewCanaryProjectThemeimport com.example.newcanaryproject.ui.theme.greenColorimport com.github.skydoves.colorpicker.compose.*class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { NewCanaryProjectTheme { // on below line we are specifying background color for our application Surface( // on below line we are specifying modifier and color for our app modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background ) { // on the below line we are specifying // the theme as the scaffold. Scaffold( // in scaffold we are specifying the top bar. topBar = { // inside top bar we are specifying background color. TopAppBar(backgroundColor = greenColor, // along with that we are specifying // title for our top bar. title = { // in the top bar we are specifying tile as a text Text( // on below line we are specifying // text to display in top app bar. text = "GFG", // on below line we are specifying // modifier to fill max width. modifier = Modifier.fillMaxWidth(), // on below line we are specifying // text alignment. textAlign = TextAlign.Center, // on below line we are specifying // color for our text. color = Color.White ) }) }) { // on below line we are calling color picker method volumeController(LocalContext.current) } } } } }}@Composablefun volumeController(context: Context) { // Declare an audio manager val audioManager = context.getSystemService(AUDIO_SERVICE) as AudioManager // on below line we are creating variables for // volume level, max volume, volume percent. val volumeLevel = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) val maxVolumeLevel = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) val volumePercent = (volumeLevel.toFloat() / maxVolumeLevel * 100).toInt() // on below line we are creating a variable // for current volume and initializing it. val currentVolume = remember { mutableStateOf(volumePercent) } // on below line we are creating a column, Column( // on below line we are adding a modifier to it, modifier = Modifier .fillMaxSize() // on below line we are adding a padding. .padding(all = 30.dp), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { // on below line we are displaying a // text as volume controller. Text( text = "Volume Controller", // on below line we are adding font weight fontWeight = FontWeight.Bold, // on below line we are adding font size. fontSize = 20.sp, // on below line we are adding text color. color = greenColor, ) // on below line we are creating text to display volume level. Text( text = "Volume Level : " + currentVolume.value, // on below line we are adding font weight. fontWeight = FontWeight.Bold, // on below line we are adding font size and color. fontSize = 20.sp, color = greenColor ) // on below line we are creating a row for buttons. Row(modifier = Modifier.padding(4.dp)) { // below line is use to create a button. Button( // below line is use to add onclick // parameter for our button onclick onClick = { // on below line we are increasing our volume. audioManager.adjustVolume( AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND ) // on below line we are getting our current volume level. val volumeLevel = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) val maxVolumeLevel = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) val volumePercent = (volumeLevel.toFloat() / maxVolumeLevel * 100).toInt() currentVolume.value = volumePercent }, // in below line we are using modifier // which is use to add padding to our button modifier = Modifier.padding(all = Dp(10F)), // below line is use to set or // button as enable or disable. enabled = true, // below line is use to // add border to our button. border = BorderStroke(width = 1.dp, brush = SolidColor(Color.Blue)), // below line is use to add shape for our button. shape = MaterialTheme.shapes.medium, // on below line we are updating color for our button. colors = ButtonDefaults.buttonColors(backgroundColor = greenColor), ) { // on below line we are adding text for our button. Text(text = "+") } // on below line we are adding a spacer. Spacer(modifier = Modifier.width(20.dp)) // below line is use to create a button. Button( // below line is use to add onclick // parameter for our button onclick onClick = { // on below line we are decreasing volume audioManager.adjustVolume( AudioManager.ADJUST_LOWER, AudioManager.FLAG_PLAY_SOUND ) // on below line we are getting our current volume level. val volumeLevel = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) val maxVolumeLevel = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) val volumePercent = (volumeLevel.toFloat() / maxVolumeLevel * 100).toInt() currentVolume.value = volumePercent }, // on below line we are updating color for our button. colors = ButtonDefaults.buttonColors(backgroundColor = greenColor), // in below line we are using modifier // which is use to add padding to our button modifier = Modifier.padding(all = Dp(10F)), // below line is use to set or // button as enable or disable. enabled = true, // below line is use to // add border to our button. border = BorderStroke(width = 1.dp, brush = SolidColor(Color.Blue)), // below line is use to add shape for our button. shape = MaterialTheme.shapes.medium, ) { // on below line we are creating a text. Text(text = "-") } } }} |
Теперь запустите приложение, чтобы увидеть результат работы приложения.
Выход: