我正在为实现网络广播的发布者编写一个用于播放直播流的 android 应用程序。
在 API 级别 8 (android 2.2) MediaPlayer 类可以播放流,所以:
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();
在实际应用中,我使用的是 prepareasync(),因此 UI 可以响应 ProgressDialog。
但是对于这个例子 prepare() 是可以的。
现在...在 Android < 2.2(API 级别 < 8)上,媒体播放器无法播放。在 Android >= 2.2(API 级别 >= 8)媒体播放器上播放,但不是在所有设备上。
此代码适用于:
Nexus One (CyanogenMod 7, Android 2.3.x) Samsung Galaxy S (Stock Rom, Android 2.3.x) Samsung Galaxy S 2 (Stock Rom, Android 2.3.x) HTC Desire (Stock Rom, Android 2.3.x) HTC Desire HD (Stock Rom, Android 2.3.x) 模拟器 (Android 2.2) Asus eee Pad Transformer TF101 (Stock Rom, Android 4.0.3)
此代码不适用于所有 Android > 2.2 的 LG 设备......但是......为什么?
如何在 LG 设备上播放直播流?