Todo aquel que ha manejado algo de android, sabe que es muy sencillo manejar el volumen, inclusive casi el 100% de los dispositivos posee botones físicos para ello.
Pero en mi último proyecto me di con la sorpresa de que debía emitir una alerta al usuario si poseía el volumen multimedia bajo, ya que la App en cuestión utiliza el sistema Text ToSpeech.
Investigando un poco, me doy con la clase AudioManager de Android, quién realiza todo el manejo de audio. Su descripción lo dice todo: “AudioManager provides access to volume and ringer mode control.”
Dentro de la clase, existen unas variables que nos serán muy útiles para el manejo de volumen de Android desde Delphi:
int STREAM_ALARM
//Se utiliza para identificar el volumen de audio de las alarmas.
int STREAM_DTMF
//Se utiliza para identificar el volumen de audio para tonos DTMF
int STREAM_MUSIC
//Se utiliza para identificar el volumen de audio para la reproducción de música.
int STREAM_NOTIFICATION
//Se usa para identificar el volumen de audio para notificaciones.
int STREAM_RING
//Se usa para identificar el volumen de audio para el timbre del teléfono
int STREAM_SYSTEM
//Se utiliza para identificar el volumen de audio de los sonidos del sistema.
int STREAM_VOICE_CALL
//Se utiliza para identificar el volumen de audio de las llamadas telefónicas.
Si continuamos navegando por la clase, encontraremos algunos métodos de los cuales podremos obtener el valor de los diferentes volúmenes como así también setear los mismos.
{Devuelve el valor de volumen máximo de una secuencia en particular}
int getStreamMaxVolume(int streamType)
{Devuelve el valor de volumen actual de una secuencia en particular}
int getStreamVolume(int streamType)
{Establece el valor de volumen para una secuencia en particular}
public void setStreamVolume (int streamType, int index, int flags)
Con solo haber visto lo comentado anteriormente, sabemos que podemos manejar la cuestión de volumen en cualquier dispositivo Android. Pero todo lo visto es Java, clases nativas en Android,
¿Cómo manejamos el volumen de Android desde Delphi?
En Delphi podemos acceder a las clases java a través de los “Bridge files“. Son una serie de ficheros escritos en Delphi que hacen una especia de puente entre las clases java de Android y nuestra Aplicación en Delphi. Todos estos Bridge Files están ubicados en el Path source\rtl\android de nuestra instalación.
Dentro de esta carpeta y para el manejo del volumen en Android, encontramos la unidad Androidapi.JNI.Media.pas solo hacemos uso de la unidad en nuestro proyecto y ya tenemos a disponibilidad las funciones antes descriptas.
A partir de aquí, el uso corre bajo su imaginación.