要实现在几秒后停止流媒体播放,可以使用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()方法来监听播放器的准备状态。