最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)監(jiān)聽音量的變化

 更新時(shí)間:2021年05月10日 15:10:09   作者:蒜蓉香菜老干媽  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)監(jiān)聽音量的變化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android實(shí)現(xiàn)監(jiān)聽音量變化的具體代碼,供大家參考,具體內(nèi)容如下

最近項(xiàng)目中涉及到了音量監(jiān)聽然后作出改變的需求,特此mark一下

想監(jiān)聽音量的變化通用的就兩種方法:

1、監(jiān)聽音量鍵的變化

方法: 重寫 activity onKeyDown函數(shù)

@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);
}

優(yōu)點(diǎn): 快速,方便,簡(jiǎn)單

缺點(diǎn): 

1. 容易消耗音量鍵改變事件(返回false有時(shí)也沒(méi)用),實(shí)測(cè)
2. 該監(jiān)聽針對(duì)當(dāng)前Activity,不同的Ac要重新重寫onKeyDown函數(shù)
3. 由第二點(diǎn)可知,無(wú)法做到整個(gè)應(yīng)用范圍監(jiān)聽

2、獲取音量變化的廣播

系統(tǒng)音量變化的時(shí)候會(huì)發(fā)送廣播,監(jiān)聽這個(gè)就行,音量變化的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){
            //注冊(cè)這個(gè)廣播
            context.registerReceiver(mVolumeBroadCastReceiver!!, filter)
        }
    }

    fun unregisterReceiver(){
        if(mVolumeBroadCastReceiver != null){
            context.unregisterReceiver(mVolumeBroadCastReceiver!!)
            mVolumeBroadCastReceiver = null
        }
    }

    interface VolumeChangeListener{
        fun onVolumeDownToMin()
        fun onVolumeUp()
    }
    
    //定義一個(gè)想監(jiān)聽音量變化的廣播接受者
    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()
                }
            }
        }

    }
}

想實(shí)現(xiàn)全局監(jiān)聽的話,可以在在一個(gè)app生命周期內(nèi)都存在的Context里去監(jiān)聽,比如MainActivity

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android編程實(shí)現(xiàn)讀取本地SD卡圖片的方法

    Android編程實(shí)現(xiàn)讀取本地SD卡圖片的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)讀取本地SD卡圖片的方法,涉及Android針對(duì)文件讀取及判定操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 在Android上實(shí)現(xiàn)HttpServer的示例代碼

    在Android上實(shí)現(xiàn)HttpServer的示例代碼

    本篇文章主要介紹了在Android上實(shí)現(xiàn)HttpServer的示例代碼,實(shí)現(xiàn)Android本地的微型服務(wù)器,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Android UI實(shí)時(shí)預(yù)覽和編寫的各種技巧

    Android UI實(shí)時(shí)預(yù)覽和編寫的各種技巧

    大家好,今天給大家分享的是Android中實(shí)時(shí)預(yù)覽UI和編寫UI的各種技巧,
    2015-11-11
  • Android應(yīng)用接入微信分享的實(shí)例代碼

    Android應(yīng)用接入微信分享的實(shí)例代碼

    本篇文章主要介紹了Android應(yīng)用接入微信分享的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • Android實(shí)現(xiàn)截圖分享qq 微信功能

    Android實(shí)現(xiàn)截圖分享qq 微信功能

    在日常生活中,經(jīng)常用到qq,微信截圖分享功能,今天小編通過(guò)本文給大家介紹Android實(shí)現(xiàn)截圖分享qq 微信功能,具體實(shí)現(xiàn)代碼大家參考下本文
    2017-12-12
  • Android實(shí)現(xiàn)圖片預(yù)覽與保存功能

    Android實(shí)現(xiàn)圖片預(yù)覽與保存功能

    在App開發(fā)中,通常為了省流提高加載速度提升用戶體驗(yàn)我們通常在列表中或新聞中的插圖都是以縮略圖壓縮過(guò)的圖片來(lái)進(jìn)行展示,當(dāng)用戶點(diǎn)擊圖片時(shí)我們?cè)偃ゼ虞d真正像素的大圖讓用戶預(yù)覽。本文將利用Flutter實(shí)現(xiàn)這一功能,需要的可以參考一下
    2022-04-04
  • flutter開發(fā)的app項(xiàng)目?打包成web

    flutter開發(fā)的app項(xiàng)目?打包成web

    如果你的Flutter版本低于2.0,請(qǐng)先升級(jí)Flutter版本,創(chuàng)建一個(gè)web文件夾來(lái)存放web相關(guān)的資源,使用HTML渲染器打包,該渲染器提供的打開速度最快,并且具有良好的瀏覽器兼容性,使用默認(rèn)設(shè)置進(jìn)行打包,提供的打開速度為一般,但依然保持良好的瀏覽器兼容性
    2024-08-08
  • Flutter集成到已有iOS工程的方法步驟

    Flutter集成到已有iOS工程的方法步驟

    這篇文章主要介紹了Flutter集成到已有iOS工程的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Android使用ViewPager完成app引導(dǎo)頁(yè)

    Android使用ViewPager完成app引導(dǎo)頁(yè)

    這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager完成app引導(dǎo)頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Android事件分發(fā)機(jī)制深入刨析原理及源碼

    Android事件分發(fā)機(jī)制深入刨析原理及源碼

    Android?的事件分發(fā)機(jī)制大體可以分為三部分:事件生產(chǎn)、事件分發(fā)?、事件消費(fèi)。事件的生產(chǎn)是由用戶點(diǎn)擊屏幕產(chǎn)生,我們這次著重分析事件的分發(fā)和消費(fèi),因?yàn)槭录职l(fā)和處理聯(lián)系的過(guò)于緊密,這篇文章將把事件的分發(fā)和消費(fèi)放在一起分析
    2023-04-04

最新評(píng)論

安宁市| 松溪县| 上杭县| 马边| 汶上县| 永和县| 五河县| 宁阳县| 苏州市| 普定县| 梁河县| 玉林市| 富顺县| 河北区| 当涂县| 金堂县| 清流县| 南平市| 罗田县| 玛纳斯县| 望城县| 化隆| 桐柏县| 老河口市| 沿河| 施秉县| 临漳县| 庆城县| 收藏| 洞头县| 新源县| 定襄县| 沅陵县| 涞源县| 郓城县| 青阳县| 广州市| 新源县| 闵行区| 鄢陵县| 苏尼特左旗|