要实现在几秒后停止流媒体播放,可以使用ExoPlayer的Handler和Runnable来实现延时停止。
以下是一个示例代码:
// 创建ExoPlayer实例
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
// 准备媒体源
MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(mediaUri);
player.setMediaSource(mediaSource);
// 准备播放器
player.prepare();
// 开始播放
player.setPlayWhenReady(true);
// 延时停止播放
long delayMillis = 5000; // 延时时间,单位为毫秒
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// 停止播放
player.setPlayWhenReady(false);
player.release();
}
}, delayMillis);
上述代码中,首先创建了一个ExoPlayer实例,并准备了媒体源。然后,通过设置player.setPlayWhenReady(true)
来开始播放。接下来,使用Handler和Runnable来实现延时停止播放的逻辑。在Runnable的run()
方法中,设置player.setPlayWhenReady(false)
来停止播放,并调用player.release()
释放资源。
请注意,上述代码中的dataSourceFactory
和mediaUri
需要根据实际情况进行设置。dataSourceFactory
是用于创建数据源的工厂,可以使用DefaultDataSourceFactory
来创建。mediaUri
是要播放的媒体文件的URI。
另外,需要确保在停止播放之前,播放器已经准备好了媒体源。可以使用ExoPlayer的addListener()
方法来监听播放器的准备状态。