【问题标题】:Display Buffering while Radio Station loads in Android application在 Android 应用程序中加载 Radio Station 时显示缓冲
【发布时间】:2011-04-15 08:52:11
【问题描述】:

我正在 Android 中制作 Radio 应用程序。我面临一个特殊的问题。我知道这可能很容易,但只是无法弄清楚如何做到这一点。我相信之前有人会遇到类似的问题,我会在这里找到解决方案

我有一个显示电台列表的第一页。一旦我点击了这些站点中的任何一个,就会启动一个新的 Activity,它的 View 具有 Play、Pause、Stop 控件。当这个活动开始时,我也立即使用startSevice() 方法调用一个新的服务。所有媒体播放器处理都在此服务中完成。

现在,我需要在实际媒体播放开始之前显示一个进度对话框(缓冲)。为了表明我正在尝试在服务中创建一个 ProgressDialog,但它要求传递一个上下文,我想我需要传递调用此服务的活动的上下文,因为当我将当前上下文传递给它,它会抛出一个错误。

如何做到这一点?有没有办法获取启动服务的 Activity 的上下文?

如果没有,还有什么其他方法可以实现这一点,即在媒体尚未开始播放时显示缓冲状态

【问题讨论】:

    标签: android streaming android-mediaplayer media


    【解决方案1】:

    使用广播意图。将服务绑定到活动,并以 1 秒的间隔向活动广播缓冲进度。在 Activity 中创建一个接收器,用于接收广播并将其转换为 Activity 中的进度条。

    我有一个问题,也许您可​​以回答:我正在使用服务进行流式传输,就像您一样,但是当缓冲第一次开始时,我不清楚如何捕获音频开始播放的时间,以便我可以删除“缓冲”通知。我试过 OnBufferingUpdate 但它有一个百分比值是音频是否正在播放。谢谢。

    【讨论】:

    • 感谢您提供出路。然而,我已经实施了一种不同的方式来完成。我相信,也可以帮助回答您的第二个问题
    • 我在Service而不是调用Activity中创建了进度条。我使用全局变量将调用活动的上下文传递给服务。然后服务在该上下文中创建了一个缓冲通知 至于你的第二个问题,如果你在服务中创建通知,你会知道 MediaPlayer 的 start() 函数何时返回(它是一个阻塞函数),并且只要返回,只需关闭进度条
    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2018-01-09
    • 2022-08-03
    • 1970-01-01
    相关资源
    最近更新 更多