1、获取音量值:

    AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

其中AudioManager.STREAM_MUSIC代表媒体音量,也可以替换成其他的类型,获取其他类型音量。


2、设置音量值:

例如我把媒体音量设置为0(静音)

    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND);


3、监听音量键被按下:


在activity重写onKeyDown方法

public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(TAG, "onKeyDown" + keyCode + "" + (keyCode == KeyEvent.KEYCODE_VOLUME_UP));
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {

    // 音量+键

   }

   if(keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){

   // 音量-键

    }

}

4、监听音量变化:

上面通过监听按键来监听调整音量的方法,不是很靠谱,因为可能用户在设置里调整音量,所以用下面方式监听音量变化


private void registerVolumeChangeReceiver() {
    mSettingsContentObserver = new SettingsContentObserver(mContext, new Handler());
    mContext.getContentResolver()
            .registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, mSettingsContentObserver);
}

private void unregisterVolumeChangeReceiver() {
    mContext.getContentResolver().unregisterContentObserver(mSettingsContentObserver);
}

public class SettingsContentObserver extends ContentObserver {
    Context context;

    public SettingsContentObserver(Context c, Handler handler) {
        super(handler);
        context = c;
    }

    @Override
    public boolean deliverSelfNotifications() {
        return super.deliverSelfNotifications();
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        Log.d(TAG, "音量:" + currentVolume);
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_PLAY_SOUND);
    }
}


5、监听震动模式变化


public boolean isMuteMode() {
    AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    return am.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
}

public boolean isVibrateMode() {
    AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    return am.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE;
}

public boolean isNormalMode() {
    AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
    return am.getRingerMode() == AudioManager.RINGER_MODE_NORMAL;
}

private void registerRingerModeReceiver() {
    mRingerModeReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) {
                // 监听到震动/静音/响铃的模式变化

                  if( isMuteMode()){

                 }
            }
        }
    };
    IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION);
    mContext.registerReceiver(mRingerModeReceiver, filter);
}



更多相关文章

  1. Android(安卓)实现监听开机启动开启后台服务,并实现自动重启。
  2. android的Home键的监听封装工具类(一)
  3. Android完美禁用Home键
  4. android短信窃听器,娱乐版,效果可以实现
  5. android > 手机MIC,听筒音量监听
  6. Android(安卓)监听各个Acitivity的生命周期
  7. android键盘的监听
  8. Android监听应用程序安装和卸载
  9. Android监听WebView滑动到底部

随机推荐

  1. android adb 调试总结
  2. Gradle sync failed: Could not find met
  3. Android(安卓)动画基础
  4. SparseArray 那些事儿(带给你更细致的分析
  5. Android(安卓)7.0 SEAndroid(安卓)app权
  6. Android中如何实现定时任务
  7. 下载Android单个项目源码的方法
  8. View、Window、WindowManager-vsync信号
  9. Android适配之dimens适配终极攻略(实际项
  10. Android(安卓)Watchdog框架看门狗解析、