android - MediaPlayer 暂停()行为

标签 android android-mediaplayer

我正在使用 MediaPlayer 从 URL 流式传输音频。

根据文档,调用 MediaPlayer pause 后跟 play 将从暂停点恢复。

我想知道这是如何处理实时音频流的。当我调用 pause 时,MediaPlayer 会为所有传入数据创建某种缓冲区,并存储它直到我再次调用 play 吗?

如果确实如此,这个缓冲区是否有最大大小?我主要担心用户暂停 MediaPlayer 并且它在存储传入的音频数据时使用大量内存。

最佳答案

据我了解,您正在使用 Mediaplayer 从 URL 流式传输音频……类似于广播 channel 。在此过程中,您正在使用缓冲区。所以,你得到的行为是很明显的。当您暂停时,您的数据将继续存储,并且在恢复流时,它将从暂停点开始。

但流式传输不应以这种方式运行,这与从暂停点开始的存储音频不同。流式音频应始终从实时流式传输的那一刻开始。所以,onPause,你应该释放缓冲区。当用户再次恢复时,您可以像第一次那样重新启动流。行为应该是这样的。

如果您查看,大多数 radio 流媒体应用程序都实现了正常的 radio 流媒体。

关于android - MediaPlayer 暂停()行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135916/

相关文章:

android - 通过蓝牙 (Android) 来自 QardioCore 的原始 ECG 信号

安卓媒体播放器 : prepared video takes 250ms to start playing

android - 下一步按钮强制意外关闭应用程序?

Android 媒体播放器在屏幕旋转时重新初始化

android - fragment 是透明的,并在下面显示 Activity

java - 单击按钮时,如何将文本从警报对话框的 EditText 复制并粘贴到我的 Activity 的 EditText?

android - 如何向下滑动 View ?

android - 从 Listview 中的 URI 播放音频,但 Seekbar 未在 Android Listview 项目中更新

android - 在 MediaPlayer 中将数据源设置为原始 ID

android - 使用 OpenWeatherMap API key