【android开发】获取情景模式和铃声,实现震动/铃声提醒

本文记录了在Android开发中如何获取情景模式和铃声,并根据模式实现震动或铃声提醒。内容包括获取手机情景模式、系统铃声URI、播放/停止铃声、开启/关闭震动以及注册和取消注册情景模式变化广播接收者的方法。
摘要由CSDN通过智能技术生成

当我们想通过铃声或者震动提醒用户的时候(类似于手机来电提醒界面),我们需要考虑到手机本身的情景模式。(目前有个OPPO的测试手机就发现,即使调为了静音模式,我依旧可以将铃声播放出来),为了防止“灵异”事件的发生,所以在提示前将情景模式判断以便还是有必要的,特地将代码纪录。
1、获取手机情景模式:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int ringerMode = audioManager.getRingerMode();

其中 ringerMode有三种情况,分别是:AudioManager.RINGER_MODE_NORMAL(铃音模式)、AudioManager.RINGER_MODE_SILENT(静音模式)、AudioManager.RINGER_MODE_VIBRATE(震动模式)

2、获取系统铃声uri:

// 获取系统默认铃声的Uri
private Uri getSystemDefultRingtoneUri() {
    return RingtoneManager.getActualDefaultRingtoneUri(this,RingtoneManager.TYPE_RINGTONE);
}

3、播放/停止播放 系统铃声

/**
 * 播放系统声音
 * */
private void startAlarm() {
    //有的手机会创建失败,从而导致mMediaPlayer为空。
    mMediaPlayer = MediaPlayer.create(this, getSystemDefultRingtoneUri());
    if (mMediaPlayer == null) {
  //有的手机铃声会创建失败,如果创建失败,播放我们自己的铃声
        SoundPoolUtils.playCallWaitingAudio();//自己定义的铃音播放工具类。具体实现见下方
    } else {
        mMediaPlayer.setLooping(true);// 设置循环
        try {
            mMediaPlayer.prepare();
        } catch (Exception e) {
            e.printStackTrace();
        }
        mMediaPlayer.start();
    }
}

/**
 * 停止播放来电声音
 */
private void stopAlarm() {
    if (mMediaPlayer != null) {
        if (mMediaPlayer.isPlaying()) {
            mMediaPlayer.stop();
            mMediaPlayer.release();
            mMediaPlayer =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值