У меня есть список радиоканалов, и я хочу транслировать через SimpleExoPlayer. У меня есть код ниже. Я впервые открываю приложение и начинаю играть на любом канале, он работает хорошо. Однако, когда я изменяю свой фрагмент, чтобы выбрать другой канал, он не воспроизводится. Может ли это быть вызвано playstate, потому что впервые его значение равно 3, и оно работает, для других событий его значение всегда равно 1 ?! Я действительно понятия не имею об этом.
public class NewPlayFragment extends Fragment {
private View view;
private Bundle args;
private SimpleExoPlayer simpleExoPlayer;
private TextView radioNameNew;
private ImageButton image_play_new, image_stop_new;
private String source, name;
private ImageView img_channel;
private static final String TAG = "NewPlayFragment";
public NewPlayFragment() {
// Required empty public constructor
}
@SuppressLint("SetTextI18n")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_new_play, container, false);
init();
args = getArguments();
assert args != null;
String imageUrl = args.getString("imageUrl");
name = args.getString("name");
String signal = args.getString("signal");
String source = args.getString("mimeMpegUrl");
Picasso.get().load(imageUrl).into(img_channel);
radioNameNew.setText(name + " (" + signal + ")");
setupPlayer();
image_play_new.setOnClickListener(v -> {
if (!source.isEmpty()) {
simpleExoPlayer.setPlayWhenReady(true);
simpleExoPlayer.getPlaybackState();
image_play_new.setEnabled(false);
image_stop_new.setEnabled(true);
} else {
Toast.makeText(getActivity(), "No broadcast available", Toast.LENGTH_LONG).show();
}
});
image_stop_new.setOnClickListener(v -> {
simpleExoPlayer.setPlayWhenReady(false);
simpleExoPlayer.getPlaybackState();
image_play_new.setEnabled(true);
image_stop_new.setEnabled(false);
});
return view;
}
private void init() {
img_channel = view.findViewById(R.id.img_channel);
radioNameNew = view.findViewById(R.id.radioNameNew);
image_play_new = view.findViewById(R.id.image_play_new);
image_stop_new = view.findViewById(R.id.image_stop_new);
}
private void pausePlayer() {
simpleExoPlayer.setPlayWhenReady(false);
simpleExoPlayer.getPlaybackState();
}
private void startPlayer() {
simpleExoPlayer.setPlayWhenReady(true);
simpleExoPlayer.getPlaybackState();
}
private void setupPlayer() {
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(getActivity(), null,
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF);
TrackSelector trackSelector = new DefaultTrackSelector();
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
ExtractorMediaSource mediaSource = new ExtractorMediaSource(Uri.parse(source),
new CacheDataSourceFactory(getActivity(), 100 * 1024 * 1024, 5 * 1024 * 1024),
new DefaultExtractorsFactory(), null, null);
simpleExoPlayer.prepare(mediaSource);
}
@Override
public void onDestroy() {
simpleExoPlayer.release();
super.onDestroy();
}
@Override
public void onPause() {
pausePlayer();
super.onPause();
}