温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Android中监听音量的变化

发布时间:2021-05-10 17:10:14 来源:亿速云 阅读:2541 作者:Leah 栏目:开发技术

这篇文章给大家介绍如何在Android中监听音量的变化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

1、监听音量键的变化

方法: 重写 activity onKeyDown函数

@Override     public boolean onKeyDown(int keyCode, KeyEvent event) {         switch (keyCode) {             case KeyEvent.KEYCODE_VOLUME_UP:                 //音量键up                 return false;             case KeyEvent.KEYCODE_VOLUME_DOWN:                 //音量键down                 return false;             default:                 break;         }         return super.onKeyDown(keyCode, event); }

优点: 快速,方便,简单

缺点: 

1. 容易消耗音量键改变事件(返回false有时也没用),实测
2. 该监听针对当前Activity,不同的Ac要重新重写onKeyDown函数
3. 由第二点可知,无法做到整个应用范围监听

2、获取音量变化的广播

系统音量变化的时候会发送广播,监听这个就行,音量变化的action是
android.media.VOLUME_CHANGED_ACTION
具体的见代码:(kotlin版本)

class VolumeChangeHelper(var context: Context){     private var mVolumeBroadCastReceiver: VolumeBroadCastReceiver? = null     private var mVolumeChangeListener: VolumeChangeListener? = null     companion object{         const val  VOLUME_CHANGE_ACTION = "android.media.VOLUME_CHANGED_ACTION"         const val EXTRA_VOLUME_STREAM_TYPE = "android.media.EXTRA_VOLUME_STREAM_TYPE"     }     private var audioManager: AudioManager? =  context.getSystemService(Context.AUDIO_SERVICE) as? AudioManager     fun registerVolumeChangeListener(volumeChangeListener: VolumeChangeListener){         mVolumeChangeListener = volumeChangeListener         mVolumeBroadCastReceiver = VolumeBroadCastReceiver()         val filter = IntentFilter()         filter.addAction(VOLUME_CHANGE_ACTION)         if(mVolumeBroadCastReceiver != null){             //注册这个广播             context.registerReceiver(mVolumeBroadCastReceiver!!, filter)         }     }     fun unregisterReceiver(){         if(mVolumeBroadCastReceiver != null){             context.unregisterReceiver(mVolumeBroadCastReceiver!!)             mVolumeBroadCastReceiver = null         }     }     interface VolumeChangeListener{         fun onVolumeDownToMin()         fun onVolumeUp()     }          //定义一个想监听音量变化的广播接受者     inner class VolumeBroadCastReceiver : BroadcastReceiver(){         override fun onReceive(context: Context?, intent: Intent?) {             if(intent?.action == VOLUME_CHANGE_ACTION && intent?.getIntExtra(EXTRA_VOLUME_STREAM_TYPE, -1) == AudioManager.STREAM_MUSIC){                 val currentVolume = audioManager?.getStreamVolume(AudioManager.STREAM_MUSIC) ?: -1                 if(currentVolume > 0){                     mVolumeChangeListener?.onVolumeUp()                 } else  if( currentVolume == 0){                     mVolumeChangeListener?.onVolumeDownToMin()                 }             }         }     } }

关于如何在Android中监听音量的变化就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI