OR博客
MediaController显示的时候返回键无效
苗锦洲
创建于:2020-08-10 12:59:51
0
31
288
0
最近在开发APP的时候涉及到视频播放,用的自带的VideoView和MediaController实现的,不过发现一个小问题,当底部的MediaController显示的时候返回键无效,试了重写onBackPress、dispatchKeyEvent等,返回键按下的时候没有一个被触发,百度基本找不到这种问题,大部分都是自定义控制条了,随后去stackoverflow上搜了一下,还是有好多一样问题的,不过上面的回答我都试了,基本都是重写dispatchKeyEvent、onBackPress等,我这边触发不了这几个方法,所以都不行。
# 问题描述 最近在开发APP的时候涉及到视频播放,用的自带的VideoView和MediaController实现的,不过发现一个小问题,当底部的MediaController显示的时候返回键无效,试了重写onBackPress、dispatchKeyEvent等,返回键按下的时候没有一个被触发,百度基本找不到这种问题,大部分都是自定义控制条了,随后去stackoverflow上搜了一下,还是有好多一样问题的,不过上面的回答我都试了,基本都是重写dispatchKeyEvent、onBackPress等,我这边触发不了这几个方法,所以都不行。 ## 可以一直显示的MyMediaController 默认的MediaController会自动隐藏,重写show方法就行了 ``` inner class MyMediaController(context: Context) : MediaController(context) { override fun show(timeout: Int) { super.show(0) } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { Log.d(TAG, "onKeyDown") return super.onKeyDown(keyCode, event) } override fun dispatchKeyShortcutEvent(event: KeyEvent?): Boolean { Log.d(TAG, "dispatchKeyShortcutEvent") return super.dispatchKeyShortcutEvent(event) } override fun dispatchKeyEventPreIme(event: KeyEvent?): Boolean { Log.d(TAG, "dispatchKeyEventPreIme") return super.dispatchKeyEventPreIme(event) } override fun dispatchKeyEvent(event: KeyEvent?): Boolean { Log.d(TAG, "dispatchKeyEvent") return if (event?.keyCode == KeyEvent.KEYCODE_BACK) { hide() finish() true } else super.dispatchKeyEvent(event) } } ``` # 暂定的解决方法 如果视频大于2s就在第一次播放后的第二秒隐藏MediaController,然后点击视频切换手动显示/隐藏 [========] # 参考链接 [android - Make MediaController show without hide - Stack Overflow](https://stackoverflow.com/questions/8515760/make-mediacontroller-show-without-hide?r=SearchResults) [CSDN上也有一个跟Stack Overflow一样的,只不过是翻译过来的](https://ask.csdn.net/questions/11037?sort=latest "CSDN上也有一个跟上面Stack Overflow那个一样的问答,只不过是翻译过来的")
评论
楼主暂时不想被别人评论哦~