/** * 媒体音量监听类 */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;        }    }}

更多相关文章

  1. Android(安卓)监听程序的安装、卸载、替换
  2. Android(安卓)流媒体系列(二)
  3. Android(安卓)Tab点击监听 自定义事件
  4. Android(安卓)系统监听,监听USB的插拔
  5. Android实现电话状态监控
  6. android之实现各个组件点击事件监听
  7. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  8. Android(安卓)监听 home键和菜单键
  9. Android(安卓)监听 home键和菜单键

随机推荐

  1. 迪斯尼主题 Android(安卓)智能机抵达日本
  2. Android如何计算View的深度
  3. android 进程与线程 相关
  4. 索尼阅读器 PRS-T1 被黑显露更多 Android
  5. Qt for Android(安卓)自定义启动页(解决
  6. Android6.0------权限申请管理(单个权限和
  7. 解析后台进程对Android性能影响的详解
  8. Android(安卓)生成正式签名的APK文件
  9. Android仿微信小视频录制功能(二)
  10. Android(安卓)Matrix的使用与自定义动画