Android MediaPlayer Uri.parse问题(Api 15)

时间:2012-05-03 12:17:06

标签: android stream nullpointerexception mp3 android-mediaplayer

我正在使用一本名为Android无线应用程序开发第2版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文件,我将非常感激。

3 个答案:

答案 0 :(得分:0)

我认为你必须做更多的事情。 Here是做你想做的事的一个例子:

答案 1 :(得分:0)

  1. 网址标题content-type可能不好。

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

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

    查看NullPointerException是否仍然存在。

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

答案 2 :(得分:0)

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

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

到清单文件!