Увеличьте или уменьшите громкость программно в 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.theme import androidx.compose.ui.graphics.Color val 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.newcanaryproject import android.content.Context import android.content.Context.AUDIO_SERVICE import android.media.AudioManager import android.os.Bundle import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape 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.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.newcanaryproject.ui.theme.NewCanaryProjectTheme import com.example.newcanaryproject.ui.theme.greenColor import 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) } } } } } } @Composable fun 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 = "-" ) } } } } |
Теперь запустите приложение, чтобы увидеть результат работы приложения.
Выход: