使用服务单击列表视图时如何在 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 在服务上接收的整数。
我在服务的 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 在服务上接收的整数。