Как воспроизвести определенный звук в exoplayer при нажатии на просмотр списка с помощью службы? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть следующий код внутри метода onCreate класса обслуживания 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);

Этот класс обслуживания связан с MainActivity.

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

И класс MainActivity имеет listview

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);
  }
});

Теперь я хочу указать классу обслуживания воспроизводить определенный элемент списка для воспроизведения при щелчке элемента в списке. Я подумал об использовании намерения для передачи данных между активностью и службой. Но я не мог эффективно общаться, потому что метод onCreate класса обслуживания не получает данные, так как он не может обрабатывать намерение.

Пожалуйста, помогите. Заранее спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

Я решил это, передав позицию источника мультимедиа, полученную из элемента списка при щелчке, через намерение от вызова активности и получения внутри onStartCommand службы и применения функции seekTo следующим образом: - целое число, переданное из действия и полученное службой с использованием намерения.

...