在 VideoView 中播放视频时 Android 后退按钮不起作用

2023-11-25

在 VideoView 中播放视频时 Android 后退按钮不起作用。但它在播放视频之前有效。我正在为 VideoView 使用自定义 MediaController。
我尝试使用调度按键事件,它不起作用。

使用 VideoView 的 Activity 代码:

mc = new CustomMediaController(mVideo.getContext(), screenIcon) {

@Override
public void hide(){
}

@Override
public boolean dispatchKeyEvent(KeyEvent event){
     if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
         super.hide();
         ((Activity) getContext()).finish();
         return true;
     }
     return super.dispatchKeyEvent(event);
}
};


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   if ((keyCode == KeyEvent.KEYCODE_BACK)) {
     onBackPressed();
     finish();
   }
   return true;
}

@Override
public void onBackPressed() {
  super.onBackPressed();
  finish();
}


CustomMediaController还包含dispatchKeyEvent:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
   if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
     ((Activity) getContext()).finish();
   }
   return super.dispatchKeyEvent(event);
}

另外,当我滚动布局时,mediaController 没有保持其在 videoView 中的位置。为了解决这个错误,我添加了一段代码来修复 mediaController 的位置。

FrameLayout f;
RelativeLayout.LayoutParams lp;
RelativeLayout.LayoutParams params;

         params = (RelativeLayout.LayoutParams) mVideo.getLayoutParams();
            params.height = mp.getVideoHeight();
            progress.dismiss();
            f = (FrameLayout) mc.getParent();
            lp = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.ALIGN_BOTTOM, mVideo.getId());
            try {
                ((LinearLayout) f.getParent()).removeView(f);
            } catch (Exception e) {
                ((RelativeLayout) f.getParent()).removeView(f);
            }
            ((RelativeLayout) mVideo.getParent()).addView(f, lp);
            //mc.setAnchorView(mVideo);
            mVideo.setLayoutParams(params);

当我删除上面的代码时,后退按钮工作得很好。

我在堆栈溢出本身中解决了以下问题,但没有解决我的问题。

我尝试过的堆栈溢出链接:

Android 后退按钮和 MediaController
VideoView 播放视频时后退按钮不起作用
播放视频 android 时未捕获第一次按后退按钮
VideoView 中的后退按钮出现问题


在我的媒体控制器中覆盖dispatchKeyEvent()后,它工作正常

 mediaController=new MediaController(this){
        @Override
        public void hide() {
            mediaController.show();
        }
        @Override
        public boolean dispatchKeyEvent(KeyEvent event){
            if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                super.hide();
                ((Activity) getContext()).finish();
                return true;
            }
            return super.dispatchKeyEvent(event);
        }
    };

    videoView.setMediaController(mediaController);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VideoView 中播放视频时 Android 后退按钮不起作用 的相关文章

  • Firebase 管理 SDK Android

    在 Android 中初始化 Firebase Admin SDK 的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedIns
  • Android 通知进度条冻结

    这是我正在使用的代码 http pastebin com 3bMCKURu http pastebin com 3bMCKURu 问题是 一段时间后 文件变得更重 通知栏下拉速度变慢 最后它就冻结了 你的通知太频繁了 这就是它冻结的原因 让
  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 获取 AlarmManager 中活动的 PendingIntents 列表

    我有办法获取活动列表PendingIntent在设备中 我开始工作AlarmManager我想看看我的PendingIntents 已正确创建和删除 也很高兴看到其他什么PendingIntent在那里 只是为了看看某些应用程序是否正在做一
  • TextView 之间有分隔线

    我正在尝试在 android studio 中创建以下布局 因为我对 android 东西还很陌生 所以我第一次尝试使用 LinearLayout 并认为这可能无法实现 现在我正在尝试使用RelativeLayout 我已经用颜色创建了这个
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 在 Android 上按下电源按钮时,如何防止先调用 onDestroy() 再调用 onCreate()

    我正在记录每个 onCreate 和 onDestroy 调用 我发现 一旦我单击 Android 上的电源按钮 以及模拟器上的电源按钮 我的活动中就会拨打电话 gt onDestroy gt onCreate 这会杀死我的游戏 然后立即从
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数

随机推荐

  • 如何将 Bootstrap 4 导航栏中的品牌徽标设置到左边缘?

    我有一个徽标 如下所示
  • RabbitMQ 使用自定义标头来存储消息参数

    我是 RabbitMQ 的新手 我对文档有些迷失 目前 作为一个例子 我正在尝试构建一个侦听队列的小型邮件服务 但我有点卡在应该将服务的参数放在哪里 目的地 主题 我应该将它们放在消息中的某种编码格式 json 中 还是应该使用标头结构 如
  • 单击地图注释时显示另一个视图

    我有一张只有一个注释的地图 我创建了一个简单的类 我希望它在用户单击注释时显示 问题是 当我单击注释时什么也没有发生 这是我的代码 void reverseGeocoder MKReverseGeocoder geocoder didFin
  • python中的子句提取/长句分割

    我目前正在开展一个涉及句子向量的项目 来自 RoBERTa 预训练模型 当句子很长时 这些向量的质量较低 并且我的语料库包含许多带有子句的长句子 我一直在寻找子句提取 长句分割的方法 但令我惊讶的是 没有一个主要的 NLP 软件包 例如 s
  • 如何将 javascript 字符串分解为每五个单词换行一次?

    我有一个不寻常的请求 给定一个如下所示的字符串 var a This is a sentance that has many words I would like to split this to a few lines 我需要每五个单词插
  • 隐式 DataTemplate 不起作用

    为什么下面隐含DataTemplate不行 仅内嵌注释DataTemplate将工作 注意 如果我删除两者DataTemplates 我看到一个字符串表示形式ProductListView完整类型名称
  • 日志文件中写入什么内容?

    我的问题很简单 将什么写入日志 有什么约定吗 我必须放入什么 由于我的应用程序必须发布 我希望有友好的日志 大多数人都可以阅读这些日志 而无需询问它是什么 我已经有了一些想法 比如时间戳 每个函数 方法的唯一标识符等 我想要几个日志级别 例
  • Android USB鼠标右键单击正确行为(ICS)

    插入 android ics 的 USB 鼠标的右键单击是否始终指定为 后退 按钮 我有一台平板电脑 但没有 我想删除状态栏 并且仍然能够通过 USB 鼠标使用平板电脑 有谁知道在哪里 如何配置 android 中的行为 迟到的答案 但答案
  • C++ 重写异常::what()

    我有一个自定义异常 class RenterLimitException public std exception public const char what 重写what 的正确方法是什么 现在 我在头文件中创建了这个自定义 并希望覆盖
  • 实体框架多租户共享数据架构:单列、多个外键

    我有以下数据结构 property Notification abstract class BindableBase base class for all tenant scoped objects abstract class Tenan
  • C++ 性能,for 与 while

    一般来说 或根据您的经验 for 和 while 循环之间的性能是否存在差异 如果它们是双重 三重嵌套怎么办 矢量化 SSE 是否受 g 或 Intel 编译器中的循环变体影响 谢谢 Here是一篇关于这个主题的好论文
  • 使用可变参数模板显式模板实例化

    我有几个模板类Impl 使用一些抽象方法 部分在 CPP 文件中实现 因此我需要显式实例化我的模板以便链接器找到它 如下所示 template class Impl
  • 使用 GROUP BY 连接单列字段

    有没有什么方法可以通过对字段进行分组来组合 连接一列中的字段 例如 col1 col2 1 aa 1 bb 1 cc 2 dd 2 ee 我想查询类似的内容 select col1 concat col2 from tableName gr
  • django 模板中的变量减法

    是可以写的 myval add 5 myval add value 乃至 myval add 5 但是 我不知道应该输入什么来添加值 1 之类的 myval add value 可悲的是 这不起作用 您需要使用双引号 myval add 5
  • 合并 XML 文档 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要 合并 两个 XML 文档 覆盖重叠的属性和元素 例如 如果我有文件1
  • ConfigurationManager 不保存设置

    这是我正在使用的代码 private void SaveConfiguration if txtUsername Text txtPassword Text ConfigurationManager AppSettings Username
  • Netbeans - 安装 SASS

    我曾多次尝试在 netbeans 上安装 SASS 我已遵循以下教程 http kgagliardo com blog netbeans sass windows 7 创建并尝试保存 SASS 文件时出现以下错误 并且未创建 CSS 文件
  • 自定义 UIControl 和手势识别器

    我正在尝试创建一个类似于滑块的自定义 UIControl 该控件是一个视图的子视图 该视图还附加了一个点击手势识别器 现在的问题是这个点击手势识别器取消了发送到我的控件的触摸 有没有办法可以从我的控件的代码中覆盖它 如果我查看 iOS 中的
  • 如何使 macOS 框架可在 Nix 环境中 clang?

    我在 macOS 10 13 5 上学习 Rust 编程 并使用 Nix 来控制我的开发环境 一些行动 例如包括jsonwebtoken库或安装cargo watch模块 导致构建需要似乎未安装的 macOS 框架 我收到此错误消息 not
  • 在 VideoView 中播放视频时 Android 后退按钮不起作用

    在 VideoView 中播放视频时 Android 后退按钮不起作用 但它在播放视频之前有效 我正在为 VideoView 使用自定义 MediaController 我尝试使用调度按键事件 它不起作用 使用 VideoView 的 Ac