Android MediaPlayer Uri.parse problems (Api 15)



我正在使用一本名为 Android Wireless Application Development 2nd edition 2009 (L.Darcey & S.Conder,由 Addison Wesley 出版(的书作为我目前正在学习的 Android 应用程序开发课程的文献。在本书的第三章中,你将使用 MediaPlayer 类启动一个媒体播放器对象,以使用下面的此方法将 mp3 文件流式传输到你的应用。

public void playMusicFromWeb() {
    try {
        Uri file = Uri.parse("http://downloads.bbc.co.uk/podcasts/6music/adamandjoe/adamandjoe_20111231-1430a.mp3");
        mp = MediaPlayer.create(this, file);
        mp.start();
    }
    catch (Exception e) {
        Log.e(DEBUG_TAG, "Player failed", e);
    }
}

快乐的日子,这一切都在 API 8 中运行良好(这是本书使用的(。但是,尝试在更高的 API 中使用此方法,尤其是 15,它是(在编写时(可用的最新 API,我抛出了一个NullPointerException。调试让我一点也不明智,因为 file 变量似乎可以很好地保存字符串值,但它不会转换为功能性 mp3 流。我已经使用prepare(); prepareAsync(); setDataSource(); reset();等尝试了各种不同的方法,但似乎没有任何效果。你会认为我的老师能够帮助我,但他们显然也不知道该怎么做。我现在假设这种流式传输方式在高于 8 的 API 中必须过时。如果有人能阐明如何在 API 3 中流式传输 mp15 文件,我将不胜感激。

我认为你必须做的不止这些。下面是执行所需操作的示例:

  1. 标头对 URL 的content-type可能不正确。

  2. 您可以尝试以下语法:

    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(URL_OF_FILE);
    mp.prepare();
    mp.start();
    

    查看NullPointerException是否仍然存在。

  3. 您还可以查看有关此特定主题的最新教程。

就像添加这一行一样简单:

<uses-permission android:name="android.permission.INTERNET" />

到清单文件!

相关内容

  • 没有找到相关文章

最新更新