Android的所有版本都支持MediaPlayer流媒体吗?

Android的所有版本都支持MediaPlayer流媒体吗?,android,streaming,media-player,Android,Streaming,Media Player,正如标题所说,我基本上想知道MediaPlayer流媒体支持是否适用于所有版本的Android 以下是我目前使用的代码,在我的Android 2.2手机上运行良好: MediaPlayer mp = new MediaPlayer(); mp.setDataSource(SHOUTCAST_STREAM); mp.prepare(); mp.start(); 但这对1.5或1.6有效吗?或者我必须为流构建自己的缓冲管理系统吗 *更新* 只是在1.6模拟器上测试了它,并得到以下错误。在2.2模拟

正如标题所说,我基本上想知道MediaPlayer流媒体支持是否适用于所有版本的Android

以下是我目前使用的代码,在我的Android 2.2手机上运行良好:

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(SHOUTCAST_STREAM);
mp.prepare();
mp.start();
但这对1.5或1.6有效吗?或者我必须为流构建自己的缓冲管理系统吗

*更新*

只是在1.6模拟器上测试了它,并得到以下错误。在2.2模拟器上,它运行良好

23:15:50.074    31  ERROR   PlayerDriver    Command PLAYER_INIT completed with an error or info PVMFFailure
23:15:50.074    282 ERROR   MediaPlayer error (1, -1)
23:15:50.074    282 ERROR   MediaPlayer io error
23:15:50.074    282 ERROR   MediaPlayer java.io.IOException: Prepare failed.: status=0x1
23:15:50.074    282 ERROR   MediaPlayer     at android.media.MediaPlayer.prepare(Native Method)
23:15:50.074    282 ERROR   MediaPlayer     at org.me.bla.Bla.onCreate(Bla.java:38)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3502)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.access$2200(ActivityThread.java:116)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1798)
23:15:50.074    282 ERROR   MediaPlayer     at android.os.Handler.dispatchMessage(Handler.java:99)
23:15:50.074    282 ERROR   MediaPlayer     at android.os.Looper.loop(Looper.java:123)
23:15:50.074    282 ERROR   MediaPlayer     at android.app.ActivityThread.main(ActivityThread.java:4203)
23:15:50.074    282 ERROR   MediaPlayer     at java.lang.reflect.Method.invokeNative(Native Method)
23:15:50.074    282 ERROR   MediaPlayer     at java.lang.reflect.Method.invoke(Method.java:521)
23:15:50.074    282 ERROR   MediaPlayer     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
23:15:50.074    282 ERROR   MediaPlayer     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
23:15:50.074    282 ERROR   MediaPlayer     at dalvik.system.NativeStart.main(Native Method)
那么,这是否意味着它在旧版本的操作系统上根本不起作用,或者有什么解决办法?我想我可以做一个自定义的缓冲系统,但我想先确保没有更简单的方法。

根据MediaPlayer类,它从api级别1开始就可用,并且没有任何不推荐的地方。所以我想说你会安全的

在1.6模拟器上,您是否启动了浏览器并确保可以访问internet

1.6模拟器是您不久前创建的吗?我在一段时间后创建的模拟器出现问题(文件损坏)。如果是这种情况,你可以创建一个新的

另一件我刚刚想到的事。。。有什么地方缺少认证吗

我发现这可能也有帮助。在他的例子中,他确实创建了一个缓冲区。

根据MediaPlayer类,它从api级别1开始就可用,并且没有任何不推荐的内容。所以我想说你会安全的

在1.6模拟器上,您是否启动了浏览器并确保可以访问internet

1.6模拟器是您不久前创建的吗?我在一段时间后创建的模拟器出现问题(文件损坏)。如果是这种情况,你可以创建一个新的

另一件我刚刚想到的事。。。有什么地方缺少认证吗


我发现这可能也有帮助。在他的示例中,他确实创建了一个缓冲区。

我认为问题在于setDataSource。它没有正确读取文件。更好的方法是通过FileInputStream读取并调用getFD()方法。例如:

MediaPlayer mPlayer=新的MediaPlayer()

FileInputStream=mContext.openFileInput(“字符串”)

mPlayer.setDataSource(stream.getFD())

stream.close()

mPlayer.setAudioStreamType(ANNOUCE_流)

mAndroidPlayer.prepare()

mAndroidPlayer.start()


我认为这将对您有所帮助。

我认为问题在于setDataSource。它没有正确读取文件。更好的方法是通过FileInputStream读取并调用getFD()方法。例如:

MediaPlayer mPlayer=新的MediaPlayer()

FileInputStream=mContext.openFileInput(“字符串”)

mPlayer.setDataSource(stream.getFD())

stream.close()

mPlayer.setAudioStreamType(ANNOUCE_流)

mAndroidPlayer.prepare()

mAndroidPlayer.start()


我认为这会对您有所帮助。

当您在1.5和1.6模拟器中尝试它时发生了什么?@commonware我正在考虑它,但出于某种原因,我认为模拟器无法播放声音,这不允许我准确地测试它。我来试一试。我也做了一些阅读,这似乎是HTTP头的问题。新版本的操作系统似乎足够聪明,可以克服这个问题,而旧版本的操作系统似乎失败了。代码非常简单。但是,2.3.3和2.3.5都无法让它工作。我继续获取准备失败。错误:状态=0x1。我想,我的流媒体资源有一些问题。你能和我分享你的url来测试吗?当你在1.5和1.6模拟器中尝试它时发生了什么事?@commonware我在考虑它,但出于某种原因,我认为模拟器不能播放声音,这不允许我准确地测试它。我来试一试。我也做了一些阅读,这似乎是HTTP头的问题。新版本的操作系统似乎足够聪明,可以克服这个问题,而旧版本的操作系统似乎失败了。代码非常简单。但是,2.3.3和2.3.5都无法让它工作。我继续获取准备失败。错误:状态=0x1。我想,我的流媒体资源有一些问题。你能和我分享你的url来测试吗?是的,我也看到了,但似乎不是这样。我问这个问题的原因是因为我读了一些书,发现不同的操作系统版本之间存在很多问题。所以,我想看看其他人对它的体验。我只是测试了一下,我可以毫无问题地访问互联网。是的,我也看到了,但事实似乎并非如此。我问这个问题的原因是因为我读了一些书,发现不同的操作系统版本之间存在很多问题。所以,我想看看其他人对它的体验。我刚刚测试过它,我可以毫无问题地访问互联网。这需要我将它保存到一个文件中,并围绕它构建一个完整的缓冲系统。我说的这条小溪是无穷无尽的——它不仅仅是一首歌。如果我找不到更简单的解决方案,这基本上是我的最后一个选择。这需要我将它保存到一个文件中,并围绕它构建一个完整的缓冲系统。我说的这条小溪是无穷无尽的——它不仅仅是一首歌。如果我找不到更简单的解决方案,那基本上是我最后的选择。