Mon objectif est de supporter 2 opérations:
mise en sourdine du téléphone (éventuellement avec vibrations activées/désactivées), pour éviter les bruits lorsque vous recevez un appel ou un SMS
rétablir le son du téléphone et rétablir le volume à l'état avant la mise en sourdine du téléphone
Comment puis-je faire ceci? Quelles sont les autorisations requises dans AndroidManifest?
Ceci est la permission de vibrer dans le fichier manifeste
<uses-permission Android:name="Android.permission.VIBRATE" />
ceci est pour mettre l'appareil en mode silencieux avec vibreur
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
ceci est pour mettre en mode sonnerie
AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
audioManager.setStreamVolume(AudioManager.STREAM_RING, maxVolume, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
public void changeRingerMode(Context context){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
/**
* To Enable silent mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
/**
* To Enable Ringer mode.....
*/
audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
Si vous voulez désactiver le son et restaurer le réglage du son à son état précédent, cela a fonctionné pour moi.
static int ringstate = 0;
private void soundOn(boolean off){
AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if(off)
{ //turn off ringing/sound
//get the current ringer mode
ringstate = audio.getRingerMode();
if(ringstate!=AudioManager.RINGER_MODE_SILENT)
audio.setRingerMode(AudioManager.RINGER_MODE_SILENT);//turn off
}
else
{
//restore previous state
audio.setRingerMode(ringstate);
}
}
Cela devrait faire.