广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现监听音量的变化
  • 529
分享到

Android实现监听音量的变化

2024-04-02 19:04:59 529人浏览 薄情痞子
摘要

本文实例为大家分享了Android实现监听音量变化的具体代码,供大家参考,具体内容如下 最近项目中涉及到了音量监听然后作出改变的需求,特此mark一下 想监听音量的变化通用的就两种方

本文实例为大家分享了Android实现监听音量变化的具体代码,供大家参考,具体内容如下

最近项目中涉及到了音量监听然后作出改变的需求,特此mark一下

想监听音量的变化通用的就两种方法:

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()
                }
            }
        }

    }
}

想实现全局监听的话,可以在在一个app生命周期内都存在的Context里去监听,比如MainActivity

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android实现监听音量的变化

本文链接: https://www.lsjlt.com/news/125554.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现监听音量的变化
    本文实例为大家分享了Android实现监听音量变化的具体代码,供大家参考,具体内容如下 最近项目中涉及到了音量监听然后作出改变的需求,特此mark一下 想监听音量的变化通用的就两种方...
    99+
    2022-11-12
  • 如何在Android中监听音量的变化
    这篇文章给大家介绍如何在Android中监听音量的变化,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android是什么Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机...
    99+
    2023-06-15
  • JS监听变量改变的实现
    目录需求和背景Object.defineProperty用法如下:入参用法:例子:对一个对象进行整体响应式监听:缺陷Proxy例子在React中的实践Object.definePro...
    99+
    2023-05-16
    JS监听变量改变 JS监听变量
  • Android编程实现监听EditText变化的方法
    本文实例讲述了Android编程实现监听EditText变化的方法。分享给大家供大家参考,具体如下: 监听EditText中的内容的变化。在EditText没有找到一个setO...
    99+
    2022-06-06
    edittext 方法 Android
  • JS监听变量改变如何实现
    这篇文章主要介绍“JS监听变量改变如何实现”,在日常操作中,相信很多人在JS监听变量改变如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS监听变量改变如何实现”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-06
  • Android 之 监听 EditText 的内容变化
    本节引言: 在前面我们已经学过EditText控件了,本节来说下如何监听输入框的内容变化! 这个再实际开发中非常实用,另外,附带着说下如何实现EditText的密码可见与不可见! 1.监听EditText的内容变化 由题可知,是基于监...
    99+
    2023-08-31
    android java android studio
  • vue实现监听localstorage值变化
    目录vue监听localstorage值变化监听localStorage中值的变化实现跨页面通信部分属性介绍如下其余属性截图如下vue监听localstorage值变化 在vue中实...
    99+
    2022-11-13
  • Android中的webview监听每次URL变化实例
    通过这个可以监听Android中webview访问的URL变化: webView.setWebViewClient(new WebViewClient(){ @Overrid...
    99+
    2022-06-06
    webview url Android
  • Android 实时监测(监听)网络连接状态变化
    看了网上的很多,都不是自己想要的。所以自己就参考着写了一个。 实现这个的方法很多,我是想的这种,如果哪有不足,有bug的地方希望大家指出,共同进步。。。。 先简单说一下思路:网...
    99+
    2022-06-06
    连接 网络连接 监听 Android
  • Android编程实现音量按钮添加监听事件的方法
    本文实例讲述了Android编程实现音量按钮添加监听事件的方法。分享给大家供大家参考,具体如下:很多Android应用都应用到音量按钮,比如翻页,调整音乐声音大小等,但是如果没有对音量按钮进行监听,则无法达到预期的效果。如下代码,就是监听A...
    99+
    2023-05-31
    android 音量 监听事件
  • 详解JavaScript实现监听路由变化
    目录historypushState()方法pushState()使用场景replaceState() 方法popstate事件pushState和replaceState如何监听呢...
    99+
    2022-11-12
  • android实现来电静音示例(监听来电)
    代码如下:private static int previousMuteMode = -1; private void toggleRingerMute(Context co...
    99+
    2022-06-06
    示例 监听 Android
  • golang监听文件变化的实例
    废话不多说,直接上官网demo package main import ( "log" "github.com/fsnotify/fsnotify" ) func main(...
    99+
    2022-11-11
  • Android 动态注册监听网络变化实例详解
    Android 动态注册监听网络变化实例详解新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下:public class MainActivity extends AppCompatActivity { ...
    99+
    2023-05-30
    android 动态注册 监听网络
  • android程序如何监听系统属性的变化
    Android 程序可以通过注册 android.os.SystemProperties 类的监听器来监听系统属性的变化。具体步骤如下: 实现 android.os.SystemProperties.OnPropertiesChanged...
    99+
    2023-09-05
    java Powered by 金山文档
  • vue实现监听数值的变化,并捕捉到
    目录上传头像的例子是完整的,登录没全部展示1. 封装全局监听方法2. 触发,并将监听的值存入Storage3. 监听完整例子(代码看上面 )第一步第二步第二步第三步上传头像的例子是完...
    99+
    2022-11-13
    vue监听 监听数值变化 vue捕捉数值
  • vue如何实时监听input值的变化
    本篇内容介绍了“vue如何实时监听input值的变化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、vuejs 2.0中js实时监听inp...
    99+
    2023-07-04
  • vue如何实现监听数值的变化并捕捉
    这篇文章主要介绍了vue如何实现监听数值的变化并捕捉的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue如何实现监听数值的变化并捕捉文章都会有所收获,下面我们一起来看看吧。1. 封装全局监听方法在main.js...
    99+
    2023-07-04
  • android音乐播放器监听电话状态实现代码
    如下代码是监听电话的状态,代码简单不做介绍直接看代码: 代码如下: private boolean mResumeAfterCall = false; pr...
    99+
    2022-06-06
    电话 监听 Android
  • Android实现音频条形图效果(仿音频动画无监听音频输入)
    音频条形图 如下图所示就是这次的音频条形图: 由于只是自定义View的用法,我们就不去真实地监听音频输入了,随机模拟一些数字即可。 如果要实现一个如上图的静态音频条形图,相信...
    99+
    2022-06-06
    输入 监听 条形图 动画 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作