使用服务单击列表视图时如何在 exoplayer 上播放特定音频?

How to play particular audio on exoplayer when clicked on listview using service?

我在服务的 onCreate 方法中有以下代码 class AudioPlayerService.java

for (Samples.Sample sample : SAMPLES) {
  MediaSource mediaSource = new ExtractorMediaSource.Factory(cacheDataSourceFactory)
      .createMediaSource(sample.uri);
  concatenatingMediaSource.addMediaSource(mediaSource);
}
player.prepare(concatenatingMediaSource);
player.setPlayWhenReady(true);

此服务 class 从 MainActivity 触发。

Intent intent = new Intent(this, AudioPlayerService.class);
Util.startForegroundService(this, intent);

并且 MainActivity class 有一个列表视图

ListView listView = findViewById(R.id.list_view);
listView.setAdapter(
    new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, SAMPLES));
listView.setOnItemClickListener(new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    ProgressiveDownloadAction action = new ProgressiveDownloadAction(
        SAMPLES[position].uri, false, null, null);
    AudioDownloadService.startWithAction(
        MainActivity.this,
        AudioDownloadService.class,
        action,
        false);
  }
});

现在我想告诉服务 class 在单击列表中的项目时播放列表中的特定项目。我想到了使用意图在 activity 和服务之间传递数据。但我无法有效沟通,因为服务的 onCreate 方法 class 无法接收数据,因为它无法处理意图。

请帮忙。提前致谢。

我通过传递媒体源的位置来解决它,点击时从列表项中获取,通过调用 activity 的意图并在服务的 onStartCommand 中接收并应用 seekTo 函数,如下所示:

exoPlayer.seekTo(position, C.TIME_UNSET);

此处的位置是从 activity 传递并通过使用 intent 在服务上接收的整数。