Android 上的流媒体广播
Stream radio on Android
我正在使用 android MediaPlayer 开发网络广播。我需要在歌曲结束和新歌开始时更新 UI。如何找到,那首歌结束了?
这是我当前的代码。 mMediaPlayer.start();当用户点击按钮时调用。
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mMediaPlayer.setDataSource(streamURL);
mMediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
无线电流是无止境的,因此流永远不会结束,但是如果您能做的是跟踪无线电流中当前正在播放的歌曲的元数据,并且如果您检测到某些内容发生了变化,那么请采取一些措施.
我想指出的更重要的一点是 MediaPlayer
对于广播流来说太慢了,我为此开发了 radio streaming app myself so I strongly reccomend you to use this library,有两个原因,一个比 [=10 更快并且缓冲区更大=](MediaPlayer
class 在某些时候有一个硬编码的 byte[] buffer = new byte[4096];
缓冲区,这会给你带来一些问题),其次,因为这个库可以让你以更舒适的方式处理元数据。
我正在使用 android MediaPlayer 开发网络广播。我需要在歌曲结束和新歌开始时更新 UI。如何找到,那首歌结束了? 这是我当前的代码。 mMediaPlayer.start();当用户点击按钮时调用。
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mMediaPlayer.setDataSource(streamURL);
mMediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
无线电流是无止境的,因此流永远不会结束,但是如果您能做的是跟踪无线电流中当前正在播放的歌曲的元数据,并且如果您检测到某些内容发生了变化,那么请采取一些措施.
我想指出的更重要的一点是 MediaPlayer
对于广播流来说太慢了,我为此开发了 radio streaming app myself so I strongly reccomend you to use this library,有两个原因,一个比 [=10 更快并且缓冲区更大=](MediaPlayer
class 在某些时候有一个硬编码的 byte[] buffer = new byte[4096];
缓冲区,这会给你带来一些问题),其次,因为这个库可以让你以更舒适的方式处理元数据。