【问题标题】:Android MediaPlayer Uri.parse problems (Api 15)Android MediaPlayer Uri.parse 问题(Api 15)
【发布时间】:2012-05-03 12:17:05
【问题描述】:

我正在使用一本名为 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 15 中流式传输 mp3 文件,我将不胜感激。

【问题讨论】:

    标签: android stream nullpointerexception mp3 android-mediaplayer


    【解决方案1】:

    我认为你必须做的不止这些。 Here 是一个做你想做的事的例子:

    【讨论】:

      【解决方案2】:
      1. URL 标头的content-type 可能是错误的。

      2. 你可以试试这个语法:

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

        查看NullPointerException 是否仍然存在。

      3. 您还可以查看更新的tutorial on this particular subject

      【讨论】:

      • 不幸的是,这在 API 15 中不起作用 :( 无论如何感谢您的帮助
      【解决方案3】:

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

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

      到清单文件!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多