Home > DeveloperSection > Forums > Notification with sound although phone is muted?
Pawan Shukla
Pawan Shukla

Total Post:29

Points:203
Posted on    October-14-2014 1:21 AM

 Android Android  Mobile Development 
Ratings:


 2 Reply(s)
 773  View(s)
Rate this:

I am creating a notification with Android's NotificationManager.

Is it possible to 'override' the phone's volume (mute) settings in such a way, that the notification's sound is ALWAYS played?

The reason I need this is the following: The notification is so important, that vibration alone may not be enough. The user MUST be alerted. So a sound shall be played, even if the phone is muted or the volume is very low.



Kamlakar Singh
Kamlakar Singh

Total Post:194

Points:1396
Supported
Posted on    October-14-2014 1:23 AM

yes it is possible.

MediaPlayer mMediaPlayer;
Uri notification = null;
notification = RingtoneManager
                .getDefaultUri(RingtoneManager.TYPE_ALARM);

mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setDataSource(ctx, notification);
        // mMediaPlayer = MediaPlayer.create(ctx, notification);
        final AudioManager audioManager = (AudioManager) ctx
                .getSystemService(Context.AUDIO_SERVICE);

        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);

        mMediaPlayer.prepare();
        // mMediaPlayer.start();
        mMediaPlayer.setLooping(true);
        mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
            public void onPrepared(MediaPlayer arg0) {
                mMediaPlayer.seekTo(0);
                mMediaPlayer.start();

            }

        });

Pawan Shukla

Total Post:37

Points:267
Posted on    October-14-2014 1:26 AM

You can change RINGING mode like this from silent to normal.
AudioManager mobilemode = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        mobilemode.setRingerMode(AudioManager.RINGER_MODE_NORMAL);


        // Turn on all sound

        // turn on sound, enable notifications
        mobilemode.setStreamMute(AudioManager.STREAM_SYSTEM, false);
        //notifications
        mobilemode.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
        //alarm
        mobilemode.setStreamMute(AudioManager.STREAM_ALARM, false);
        //ringer
        mobilemode.setStreamMute(AudioManager.STREAM_RING, false);
        //media
        mobilemode.setStreamMute(AudioManager.STREAM_MUSIC, false);


        // Turn off all sound

        // turn off sound, disable notifications
        mobilemode.setStreamMute(AudioManager.STREAM_SYSTEM, true);
        //notifications
        mobilemode.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
        //alarm
        mobilemode.setStreamMute(AudioManager.STREAM_ALARM, true);
        //ringer
        mobilemode.setStreamMute(AudioManager.STREAM_RING, true);
        //media
        mobilemode.setStreamMute(AudioManager.STREAM_MUSIC, true);

FOR YOUR CASE YOU CAN TRY SOMETHING LIKE THIS

int previousNotificationVolume =mobilemode.getStreamVolume(AudioManager.STREAM_NOTIFICATION);

        mobilemode.setStreamVolume(AudioManager.STREAM_NOTIFICATION,mobilemode.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), 0);

        // Play notification sound
        // Set notification sound to its previous 

        mobilemode.setStreamVolume(AudioManager.STREAM_NOTIFICATION,previousNotificationVolume, 0);

Don't want to miss updates? Please click the below button!

Follow MindStick