正如标题所说,我基本上想知道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)
这是否意味着它只是在旧版本的操作系统上不起作用,或者是否有任何解决方法?我想我可以做一个自定义缓冲系统,但我想确保首先没有更简单的方法。
答案 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();
我认为这会对你有帮助。