Notification with sound although phone is muted

老子叫甜甜 提交于 2019-12-19 09:18:36

问题


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.


回答1:


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();

            }

        });



回答2:


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);


来源:https://stackoverflow.com/questions/26353361/notification-with-sound-although-phone-is-muted

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!