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

时间:2011-04-06 23:09:54

标签: 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模拟器上它工作正常。

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)

这是否意味着它只是在旧版本的操作系统上不起作用,或者是否有任何解决方法?我想我可以做一个自定义缓冲系统,但我想确保首先没有更简单的方法。

2 个答案:

答案 0 :(得分:1)

根据Android References,自api级别:1以来,MediaPlayer类已经可用,并且没有任何关于它被弃用的内容。所以我会说你会安全的。

在您的1.6模拟器上,您启动了浏览器并确保可以访问互联网吗?

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

我刚才想到的另一件事......某处遗漏了某些身份验证吗?

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

答案 1 :(得分:0)

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

MediaPlayer mPlayer = new MediaPlayer();

FileInputStream stream = mContext.openFileInput(“string”);

mPlayer.setDataSource(stream.getFD());

stream.close();

mPlayer.setAudioStreamType(ANNOUCE_STREAM);

mAndroidPlayer.prepare();

mAndroidPlayer.start();

我认为这会对你有帮助。