Audio Manager es una clase presente en Android que ayuda a administrar el audio del dispositivo Android específico. El propio nombre de la clase administrador de audio nos dice que se utiliza para administrar el audio. La clase Administrador de audio se usa para cambiar el modo de audio en diferentes modos, como el modo normal, silencioso y de vibración. En este artículo, crearemos una aplicación de Android simple para cambiar el modo de audio de los dispositivos Android. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo.
Nota : si está buscando implementar Audio Manager en la aplicación de Android usando Java. Consulte el siguiente artículo: Administrador de audio en Android usando Java
Implementación paso a paso
Paso 1: crea un nuevo proyecto en Android Studio
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.
Paso 2: agregue permisos en el archivo AndroidManifest.xml
Vaya a la aplicación > manifiesto > AndroidManifest.xml y agregue el siguiente permiso en la etiqueta del manifiesto.
XML
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
Paso 3: agregar íconos a la carpeta dibujable
Navegue a la aplicación> carpeta dibujable> Haga clic con el botón derecho en él> Nuevo> Activo vectorial> Seleccione el icono y simplemente haga clic en Finalizar para agregar ese icono.
Paso 4: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml . Se agregan comentarios dentro del código para comprender el código con más detalle.
XML
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <!-- Textview to display the heading of the app--> <TextView android:id="@+id/idTVHeading" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginTop="50dp" android:layout_marginRight="20dp" android:gravity="center" android:padding="5dp" android:text="Ringtone Manager Application" android:textAlignment="center" android:textColor="@color/purple_200" android:textSize="20sp" android:textStyle="bold" /> <!-- Textview to display the current mode of the Ringer mode--> <TextView android:id="@+id/idTVCurrentMode" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/idTVHeading" android:layout_marginTop="60dp" android:gravity="center" android:padding="4dp" android:text="Current Mode" android:textAlignment="center" android:textAllCaps="true" android:textColor="@color/purple_200" android:textSize="20sp" android:textStyle="bold" /> <!--on below line we are creating a horizontal linear layout for our 3 buttons--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/idTVCurrentMode" android:layout_marginTop="80dp" android:orientation="horizontal" android:weightSum="3"> <!--on below line we are creating image button for vibrate mode--> <ImageButton android:id="@+id/idIBVibrateMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/purple_200" android:contentDescription="Vibrate Mode" android:src="@drawable/ic_vibrate" android:tint="@color/white" /> <!--on below line we are creating image button for silent mode--> <ImageButton android:id="@+id/idIBSilentMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/purple_200" android:contentDescription="Silent Mode" android:src="@drawable/ic_silent_mode" android:tint="@color/white" /> <!--on below line we are creating image button for ringer mode--> <ImageButton android:id="@+id/idIBRingtoneMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/purple_200" android:contentDescription="Ring Mode" android:src="@drawable/ic_ringtone_mode" android:tint="@color/white" /> </LinearLayout> </RelativeLayout>
Paso 5: trabajar con el archivo MainActivity.kt
Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.
Kotlin
package com.gtappdevelopers.kotlingfgproject import android.app.NotificationManager import android.content.Context import android.content.Intent import android.media.AudioManager import android.os.Bundle import android.provider.Settings import android.util.Log import android.widget.ImageButton import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { // on below line we are creating variable for // text view, image button and audio manager. lateinit var currentModeTV: TextView lateinit var vibrateIB: ImageButton lateinit var silentIB: ImageButton lateinit var ringerIB: ImageButton lateinit var audioManager: AudioManager // on below line we are creating an integer // variable to get the current audio mode. var currentAudioMode = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // on below line we are initializing // image buttons and text view. vibrateIB = findViewById(R.id.idIBVibrateMode) silentIB = findViewById(R.id.idIBSilentMode) ringerIB = findViewById(R.id.idIBRingtoneMode) currentModeTV = findViewById(R.id.idTVCurrentMode) // on below line we are initializing our audio managrr. audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager // on below line we are getting our current ring tone mode. currentAudioMode = audioManager.ringerMode; // on below line we are setting text view for the current mode. when (currentAudioMode) { // on below line we are setting text view as ringer mode for normal ringer mode. AudioManager.RINGER_MODE_NORMAL -> currentModeTV.setText("Ringer Mode") // on below line we are setting silent mode for current silent mode. AudioManager.RINGER_MODE_SILENT -> currentModeTV.setText("Silent Mode") // on below line we are setting vibrate mode for current vibrate mode. AudioManager.RINGER_MODE_VIBRATE -> currentModeTV.setText("Vibrate Mode") // below code will be called when the current mode is not able to detect else -> currentModeTV.setText("Fail to get mode") } // on below line we are setting on click // listener for our silent image button. silentIB.setOnClickListener { // on below line we are initializing our notification manager. val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager // on below line we are creating a variable for intent. val intent = if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M && !notificationManager.isNotificationPolicyAccessGranted) { // if notification policy is not granted we // are calling this intent on below line. Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS) // on below line we are simply calling start activity // to start the activity. startActivity(intent) } else { Log.e("tag", "Audio Manager not accessible..") // on below line we are simply updating audio manager // ringer mode to silent. audioManager.ringerMode = AudioManager.RINGER_MODE_SILENT // on below line we are displaying a simple toast message. Toast.makeText(this@MainActivity, "Silent Mode activated..", Toast.LENGTH_SHORT) .show() // on below line we are setting current mode text as silent mode. currentModeTV.text = "Silent Mode Activated.." } } // on below line we are adding on click listener for vibrate image button. vibrateIB.setOnClickListener { // on below line we are setting ringer mode for audio manager // as ringer mode vibrate audioManager.ringerMode = AudioManager.RINGER_MODE_VIBRATE // on below line we are displaying a toast message as vibrate mode activated. Toast.makeText(this@MainActivity, "Vibrate Mode activated..", Toast.LENGTH_SHORT).show() // on below line we are setting current mode // text view to vibrate mode activated. currentModeTV.text = "Vibrate Mode Activated.." } // on below line we are adding on click listener // for our ringer image button. ringerIB.setOnClickListener { // on below line we are setting ringer mode as normal ringer mode. audioManager.ringerMode = AudioManager.RINGER_MODE_NORMAL // on below line we are displaying a toast message and // setting current mode text view. Toast.makeText(this@MainActivity, "Ringer Mode activated..", Toast.LENGTH_SHORT).show() currentModeTV.text = "Ringtone Mode Activated.." } } }
Ahora ejecute su aplicación para ver el resultado.
Producción:
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA