热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

检测缓冲错误(或超时)AndroidMediaPlayer–使用计时器超时?

显然没有抛出异常,因此我可以在缓冲流音频内容时识别错误.例如,我已断开我的路由器,应用程序将继续尝试缓冲整个时间.当我重新连接然后它完成缓冲并且甚至在断开连接超过一分钟后继续!所以

显然没有抛出异常,因此我可以在缓冲流音频内容时识别错误.例如,我已断开我的路由器,应用程序将继续尝试缓冲整个时间.当我重新连接然后它完成缓冲并且甚至在断开连接超过一分钟后继续!

所以问题是我不能让我的用户长时间坐在那里而不考虑问题.检测Android媒体播放器缓冲问题的正确方法是什么?

我正在考虑使用Timer超时.我可能会在15秒后开始(使用代理我测试了5kbps连接,这是最糟糕的情况,能够在6-10秒内开始播放,所以我认为15秒将是一个合理的超时时间).这听起来像个好计划吗?如果是这样,我应该在每次缓冲区尝试时创建一个新的Timer,还是应该在播放服务的整个生命周期内保持相同的Timer?

所以基本上我问两个问题:

1)检测缓冲区是否有问题的正确方法是什么?我有一个倾听的倾听者吗?我已经尝试了MediaPlayer.OnErrorListener当然不会在我的测试中触发.我的结论是我必须超时才能检测到缓冲错误.

2)如果我在第一名上是正确的,那么使用计时器的正确方法是什么?每次缓冲区尝试创建一个或重用相同的缓冲区?编辑我还应该重启(或取消并创建一个新的)Timer onBufferUpdate吗?使用onBufferUpdate监听器,我应该知道有些数据会回来,所以应该重置计时器.

解决方法:

根据您的问题,我了解主要目标是在您的播放器因缓冲而停滞并采取某些措施时检测情况.为了处理这种情况,我觉得以下2个听众可能有助于识别相同的情况.

MediaPlayer.onBufferingUpdate将提供缓冲的及时进度.因此,如果有2个回调具有相同的百分比值,则这可能表示潜在的缓冲.

还有另一个听众MediaPlayer.onInfoListener,其中包含一些您可能感兴趣的特定事件.在这个监听器上,如果是MEDIA_INFO_BUFFERING_START,则表示播放器正在暂停播放以进行缓冲,即触发逻辑.类似地,MEDIA_INFO_BUFFERING_END表示在填充缓冲区后重新开始播放.


推荐阅读
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • Android 自定义 RecycleView 左滑上下分层示例代码
    为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。 ... [详细]
  • 本文详细介绍了 Charles 工具的下载、安装、配置及使用方法,特别针对 HTTP 和 HTTPS 协议的数据抓取进行了说明。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • Java能否直接通过HTTP将字节流绕过HEAP写入SD卡? ... [详细]
  • 如何配置磊科路由器的访问控制功能? ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
author-avatar
okkkokkokkkokka
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有