Android(安卓)监听系统音量
16lz
2021-12-04
/** * 媒体音量监听类 */public class VolumeChangeObserver { private static final String ACTION_VOLUME_CHANGED = "android.media.VOLUME_CHANGED_ACTION"; private static final String EXTRA_VOLUME_STREAM_TYPE = "android.media.EXTRA_VOLUME_STREAM_TYPE"; private Context mContext; private OnVolumeChangeListener mOnVolumeChangeListener; private VolumeReceiver mVolumeReceiver; private AudioManager mAudioManager; public VolumeChangeObserver(Context context) { mContext = context; mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); } public int getCurrentVolume() { return mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); } public void registerVolumeReceiver() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ACTION_VOLUME_CHANGED); mVolumeReceiver = new VolumeReceiver(this); mContext.registerReceiver(mVolumeReceiver, intentFilter); } public void unregisterVolumeReceiver() { if (mVolumeReceiver != null) mContext.unregisterReceiver(mVolumeReceiver); mOnVolumeChangeListener = null; } public void setOnVolumeChangeListener(OnVolumeChangeListener listener) { this.mOnVolumeChangeListener = listener; } public interface OnVolumeChangeListener { void onVolumeChange(int volume); } private static class VolumeReceiver extends BroadcastReceiver { private WeakReference<VolumeChangeObserver> mObserver; VolumeReceiver(VolumeChangeObserver observer) { mObserver = new WeakReference<>(observer); } @Override public void onReceive(Context context, Intent intent) { if (mObserver == null) return; if (mObserver.get().mOnVolumeChangeListener == null) return; if (isReceiveVolumeChange(intent)) { OnVolumeChangeListener listener = mObserver.get().mOnVolumeChangeListener; listener.onVolumeChange(mObserver.get().getCurrentVolume()); } } private boolean isReceiveVolumeChange(Intent intent) { return intent.getAction() != null && intent.getAction().equals(ACTION_VOLUME_CHANGED) && intent.getIntExtra(EXTRA_VOLUME_STREAM_TYPE, -1) == AudioManager.STREAM_MUSIC; } }}
更多相关文章
- Android(安卓)监听程序的安装、卸载、替换
- Android(安卓)流媒体系列(二)
- Android(安卓)Tab点击监听 自定义事件
- Android(安卓)系统监听,监听USB的插拔
- Android实现电话状态监控
- android之实现各个组件点击事件监听
- Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
- Android(安卓)监听 home键和菜单键
- Android(安卓)监听 home键和菜单键