AudioManager es una clase proporcionada por Android que se puede utilizar para controlar el volumen del timbre de su dispositivo Android. Con la ayuda de esta clase de Audio Manager, puede controlar fácilmente el volumen del timbre de su dispositivo. Audio Manager Class se puede usar llamando al método getSystemService() en Android. Cuando crea Audio Manager Class, puede usar el método setRingerMode() para cambiar el volumen del timbre de su dispositivo. El método setRingerMode() toma un parámetro entero para configurar el perfil de timbre de su dispositivo. Hay tres parámetros enteros diferentes que deben pasarse en el método setRingerMode() como sigue:
TIMBRE_MODO_NORMAL | Este modo establecerá el modo de su dispositivo en modo Normal/General. |
---|---|
TIMBRE_MODO_SILENCIO | Este modo establecerá el modo de su dispositivo en modo silencioso. |
TIMBRE_MODO_VIBRAR | Este modo configurará el modo de su dispositivo en el modo de vibración. |
Ejemplo
Este es el ejemplo simple en el que estamos creando la aplicación Ringtone Manager. Esta aplicación lo ayudará a cambiar el estado actual de su dispositivo de General a Vibrar y luego a Modo silencioso. Java
Implementación paso a paso
Paso 1: Crear un nuevo proyecto
Cómo crear/iniciar un nuevo proyecto en Android Studio Java
Paso 2: agregue permisos en el archivo AndroidManifest.xml
Agregue la siguiente línea en el archivo AndroidManifest.xml .
<usos-permiso android:name=”android.permission.ACCESS_NOTIFICATION_POLICY” />
Paso 3: agregue el repositorio de Google en el archivo build.gradle del proyecto de la aplicación si no está allí de manera predeterminada
script de compilación {
repositorios {
Google()
mavenCentral()
}
Todos los componentes de Jetpack están disponibles en el repositorio de Google Maven, inclúyelos en el archivo build.gradle
todos los proyectos {
repositorios {
Google()
mavenCentral()
}
}
Paso 4: Modifique el archivo strings.xml
A continuación se muestra el código del archivo strings.xml .
XML
<resources> <string name="app_name">GFG Ringtone Manager</string> <string name="vibrate_mode">vibrate_mode</string> <string name="silent_mode">silent_mode</string> <string name="ring_mode">ringtone_mode</string> <string name="welcome_to_ringtone_manager_app">Welcome to Ringtone Manager App</string> <string name="current_mode">Current Mode</string> </resources>
Paso 5: trabajar con el archivo activity_main.xml
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"?> <!--XML Code for your activity_main.xml--> <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" 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:text="@string/welcome_to_ringtone_manager_app" android:textAlignment="center" android:textColor="@color/green" android:textSize="20sp" /> <!-- 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:text="@string/current_mode" android:textAlignment="center" android:textAllCaps="true" android:textColor="@color/black" android:textSize="20sp" android:textStyle="bold" /> <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"> <!-- width of image button is 0dp because we have mentioned weight=1--> <!-- tint represents the color of icons of image button--> <!-- all icons of image button are placed in drawable folder--> <ImageButton android:id="@+id/idIBVibrateMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/green" android:contentDescription="@string/vibrate_mode" android:src="@drawable/ic_vibrate" android:tint="@color/white" /> <ImageButton android:id="@+id/idIBSilentMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/green" android:contentDescription="@string/silent_mode" android:src="@drawable/ic_silent_mode" android:tint="@color/white" /> <ImageButton android:id="@+id/idIBRingtoneMode" android:layout_width="0dp" android:layout_height="100dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/green" android:contentDescription="@string/ring_mode" android:src="@drawable/ic_ringtone_mode" android:tint="@color/white" /> </LinearLayout> </RelativeLayout>
Paso 6: trabajar con el archivo MainActivity.java
A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // TextView to display the current ringer mode TextView currentStateTV; // Image buttons to switch ringer mode. ImageButton silentIB, vibrateIB, ringtoneIB; // object class variable for audio manager class. private AudioManager audioManager; // current mode to store integer value of ringer mode. int currentmode; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); currentStateTV = findViewById(R.id.idTVCurrentMode); silentIB = findViewById(R.id.idIBSilentMode); vibrateIB = findViewById(R.id.idIBVibrateMode); ringtoneIB = findViewById(R.id.idIBRingtoneMode); audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // current mode will store current mode // of ringer of users device.. currentmode = audioManager.getRingerMode(); switch (currentmode) { case AudioManager.RINGER_MODE_NORMAL: currentStateTV.setText("Ringer Mode"); break; case AudioManager.RINGER_MODE_SILENT: currentStateTV.setText("Silent Mode"); break; case AudioManager.RINGER_MODE_VIBRATE: currentStateTV.setText("Vibrate Mode"); default: currentStateTV.setText("Fail to get mode"); } silentIB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // the below code is to check the permission that the access // notification policy settings from users device.. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !notificationManager.isNotificationPolicyAccessGranted()) { Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); startActivity(intent); } // set ringer mode here will sets your ringer mode to silent mode audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); Toast.makeText(MainActivity.this, "Silent Mode Activated..", Toast.LENGTH_SHORT).show(); currentStateTV.setText("Silent Mode Activated.."); } }); vibrateIB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // set ringer mode here will sets your ringer mode to vibrate mode audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); Toast.makeText(MainActivity.this, "Vibrate Mode Activated..", Toast.LENGTH_SHORT).show(); currentStateTV.setText("Vibrate Mode Activated.."); } }); ringtoneIB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // set ringer mode here will sets your ringer mode to normal mode audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); Toast.makeText(MainActivity.this, "Ringtone Mode Activated..", Toast.LENGTH_SHORT).show(); currentStateTV.setText("Ringtone Mode Activated.."); } }); } }
Salida: Ejecute la aplicación en su dispositivo
Enlace del proyecto: Haga clic aquí
Publicación traducida automáticamente
Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA