当屏幕关闭时,MediaPlayer 在 Lollipop 上过早切断播放

2023-12-11

我在 Lollipop 设备上遇到了 MediaPlayer 的问题。基本上,当设备屏幕关闭(即用户锁定设备)时,播放会继续,但提前结束约 1 - 2 秒。但屏幕打开时不会发生这种情况。

我在 MediaPlayer 上有一个 onCompletionListener:

@Override
public void onCompletion(final MediaPlayer mediaPlayer) {
    int progress = mediaPlayer.getCurrentPosition();
    int duration = mediaPlayer.getDuration();
    Log.d("PlaybackController", "progress: " + progress + " duration: " + duration);
    Log.d("PlaybackController", "Delay: " + (duration - progress)); // I'm seeing a difference of 1 - 3 seconds :(.
    mServiceHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            broadcastCompleted();
        }
    }, Math.max(duration - progress, 0));
}

这通常会打印:Delay: [1500 - 3000]。我想知道是否缺少唤醒锁,但我正在制作此处提到的正确锁:http://developer.android.com/guide/topics/media/mediaplayer.html,其中包括 PARTIAL_WAKE_LOCK 和 WifiLock。我还缺少其他东西吗?


好吧,问题似乎是 Android 5.0.1 的实验性 MediaPlayer(称为 NuPlayer)。 NuPlayer 在所有 Android 5.0.1 设备上默认启用,只能通过开发者选项禁用。我在这里提交了针对 Android 的错误:

以下是当用户在 Android 5.0.1 设备上遇到媒体播放问题时可以向其发送的示例电子邮件:

看起来这可能是 Android 的新实验性 MediaPlayer(称为 NuPlayer)上的一个错误。要解决此问题,请按照下列步骤操作:

  1. 前往安卓设置
  2. 转到“关于电话”
  3. Scroll down to "Build Number" and tap the Build number 7 times.
    • 您将看到一条消息:“您现在距离成为开发人员还差 X 步”。
    • 点击 7 次后,会显示“您现在是开发者了!”
  4. 返回主设置屏幕,您将在“关于手机”上方看到一个名为“开发者选项”的新选项
  5. 进入开发者选项并取消选择“媒体”部分下的“使用 NuPlayer(实验)”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当屏幕关闭时,MediaPlayer 在 Lollipop 上过早切断播放 的相关文章

  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • Android 通知进度条冻结

    这是我正在使用的代码 http pastebin com 3bMCKURu http pastebin com 3bMCKURu 问题是 一段时间后 文件变得更重 通知栏下拉速度变慢 最后它就冻结了 你的通知太频繁了 这就是它冻结的原因 让
  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 与 Admob 广告单元 ID 混淆

    我跟着tutorial https developers google com admob android quick start在我的应用程序中创建广告横幅 到目前为止 这有效 我可以看到测试广告 但是 本教程指示我在两个不同的位置使用两
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 获取 AlarmManager 中活动的 PendingIntents 列表

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

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框

随机推荐

  • C++ 模板语法

    如何修复此语法错误 struct A template lt typename T gt void f template lt typename C typename U gt struct B void g U f lt C gt exp
  • javascript 通过引用传递解决方法

    假设我有一个数组 var animals dog cat rat 然后我定义var pets animals 然后我打电话pets shift 现在因为 javascript 是数组的引用传递 如果我现在调用animals I get ca
  • 如何在R中按组选择具有最小值且包含NA的行

    这是一个例子 set seed 123 data lt data frame X rep letters 1 3 each 4 Y sample 1 12 12 Z sample 1 100 12 data data 3 lt NA 我要意
  • WordPress 阻止用户发布全尺寸图像上传

    WordPress 有什么方法可以阻止内容编辑者在将图像上传到帖子时选择 全尺寸 选项吗 我希望他们只有 缩略图 中 和 大 选项 我曾经使用 Scissors 插件来执行此操作 但从 Wordpress 2 9 开始 该插件不再起作用 您
  • 如何修改Java声音文件的音高? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃圾邮件 反而 描述问题以及迄今为止已采取哪些措施来解决该
  • 使用 SQLite3 + Mutagen 优化 Python 代码

    我正在改进一个开源音乐数 据库 该数据库从我的收藏中读取歌曲并将它们存储到 SQLite 数据库中 反过来 我可以利用数据库查找重复项 对我的收藏运行查询 并且 如果我愿意 在收藏中查找重复的歌曲 要从音乐文件中读取元数据 我正在利用Mut
  • 在单声道上获取带有转义斜杠的 Uri

    更新 修复现已进入mono 这是个好消息 更新 添加了修复片段处理的逻辑 我正在尝试使用 Uri 类在 Mono 上发送带有编码斜杠的请求 这基本上是 Mono 的等价物question 获取带有 url 编码斜杠的 URL 问题在于 与
  • 使用 Windows 身份验证通过 sqlsrv_connect 连接到 SQL Server

    The 官方指南使用 Microsoft 的 PHP 驱动程序连接到 SQL Server 似乎非常简单 因此我复制了大部分文本 server serverlocation prod database array Database gt t
  • PyInstaller 和 FastAPI(超出最大递归深度)

    我有一个 python 服务 使用fastapi作为网络界面 我需要制作一个可执行文件 因此我正在使用py安装程序 我不断收到以下错误 File miniconda3 lib python3 7 site packages PyInstal
  • 我应该在网站上使用相对 URL 还是绝对 URL?

    如果我不移动我的网站 有什么充分的理由说明为什么我应该使用绝对 URL 而不是相对 URL 无论您是否将内容从一个文件夹移动到另一个文件夹 绝对 URL 都将起作用 但是每种语言都有一种以这种或另一种方式引用基本 URL 的方法 例如 如果
  • Chrome 不支持 Webgl 2.0

    我的 chrome 显示 Webgl 2 0 支持 但在浏览器设置中禁用 或被扩展阻止 我努力了 1 在chrome settings中使用硬件加速 2 在 chrome flags 中启用 WEBGL 2 0 3 覆盖软件渲染列表 还有什
  • 权限被拒绝:“CreateObject”-ImageResizer

    我只是尝试安装 imageresizing net com 对象 我正在使用以下代码来创建该对象 set c CreateObject ImageResizer Configuration Config c BuildImage image
  • 从oracle存储过程中获取结果集

    我正在努力将存储过程从 SQL Server 转换为 Oracle 此存储过程提供直接结果集 我的意思是 如果您在例如 Management Studio 中调用存储过程 您将直接获得结果集 通过转换为Oracle 我遇到了Oracle中不
  • 如何使用角度材料实现范围内联日历?

    我想使用物料日历作为范围内联日历来显示和插入日期范围 当使用 mat date range picker 时 这只是工作 但不是内联 使用 mat calendar 时 它适用于内联 但不适用于范围 但是 如果我将 selectedRang
  • 动态查询结果存入临时表或表变量

    我有一个使用 sp executesql 生成结果集的存储过程 结果中的列数可能有所不同 但形式为 Col1 Col2 Col3 等 我需要将结果放入临时表或表变量中 以便我可以使用它 问题是我需要定义临时表的列 但我无法使用 sp exe
  • 为什么我会收到堆栈溢出?

    我的第一个代码块是我的项目对象文件 第二个是主类 在代码运行没有任何问题之前 但在添加读写文件之后 我的代码开始收到堆栈流错误 只是调用错误的片段 public class Item implements java io Serializa
  • 如何使用 Google Apps 脚本将表格置于 Google 文档页面的中心

    我已使用 Google Apps 脚本功能在 google 文档中插入了一个表格 var grg body appendTable griglia 我可以设置表格中文本的格式 字体大小 粗细 对齐方式 也可以设置单个单元格的格式 背景 前景
  • 我应该如何使用 HttpRequest.GetBufferlessInputStream?

    我在 WCF 服务中接收发布数据时遇到问题 如果我尝试使用 InputStream 则会出现异常 调用 HttpRequest GetBufferlessInputStream 后不支持此方法或属性 我相信我明白为什么会抛出这个错误 但我还
  • OpenGL 中的厚贝塞尔曲线

    我正在使用 jogl opengl 绑定在 java 中编写一个程序 我需要创建一条厚度沿曲线变化的贝塞尔曲线 到目前为止 我只管理了一条细的单点贝塞尔曲线 我很确定这不是一件容易的事 但我不知道从哪里开始寻找解决方案 如果有人能指出我如何
  • 当屏幕关闭时,MediaPlayer 在 Lollipop 上过早切断播放

    我在 Lollipop 设备上遇到了 MediaPlayer 的问题 基本上 当设备屏幕关闭 即用户锁定设备 时 播放会继续 但提前结束约 1 2 秒 但屏幕打开时不会发生这种情况 我在 MediaPlayer 上有一个 onComplet