2011-04-06 110 views
1

正如標題所說,我基本上想知道MediaPlayer流媒體支持是否適用於所有Android版本。所有版本的Android都支持MediaPlayer流媒體嗎?

這是我目前使用的代碼,這在我的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) 

那麼這是否意味着它只是不適用於舊版本的操作系統,或者是否有任何解決方法?我想我可以做一個自定義的緩衝系統,但我想確保首先沒有更簡單的方法。

+1

當你在1.5和1.6模擬器中試過時發生了什麼? – CommonsWare 2011-04-06 23:11:02

+0

@CommonsWare我一直在想它,但由於某種原因,我認爲模擬器將無法播放聲音,這不會讓我準確地測試它。我會給它一個鏡頭。 – xil3 2011-04-06 23:15:43

+0

剛剛更新了問題。 – xil3 2011-04-06 23:24:51

回答

1

根據Android References MediaPlayer類自api level:1開始就可用,並且沒有任何關於它被棄用的內容。所以我會說你會安全的。

在您的1.6模擬器上,您是否啓動了瀏覽器並確保您可以訪問互聯網?

是您之前創建的1.6仿真器嗎?我有一段時間後創建的模擬器出現問題(文件被損壞)。如果是這種情況,你可以創建一個新的。

我剛纔想到的另一件事是否有一些認證失蹤的地方?

我覺得這個tutorial這可能也有幫助。他在他的例子中創建了一個緩衝區

+0

是的,我也看到了,但似乎並非如此。我問這個問題的原因是因爲我做了一些閱讀,發現不同操作系統版本之間存在很多問題。所以,我想看看其他人的經歷是怎樣的。 – xil3 2011-04-06 23:31:24

+0

我剛測試過它,並且可以毫無問題地訪問互聯網。 – xil3 2011-04-06 23:37:19

0

我認爲問題出在setDataSource上。它沒有正確讀取文件。更好的方法是通過FileInputStream讀取並調用getFD()方法。

FileInputStream stream = mContext.openFileInput(「string」);

mPlayer.setDataSource(stream.getFD());

stream.close();

mPlayer.setAudioStreamType(ANNOUCE_STREAM);

mAndroidPlayer.prepare();

mAndroidPlayer.start();

我想這會幫助你。

+0

這需要我將它保存到一個文件中並圍繞它建立一個完整的緩衝系統。我所說的流是無止境的 - 這不僅僅是一首歌。這基本上是我最後的選擇,如果我找不到更簡單的解決方案。 – xil3 2011-04-06 23:47:18

相關問題