0
In my mainActivity I have the method: player.setPlayWhenReady(true) which is responsible for making the player start playing and continues to run in the background while I am browsing between my Activity, the problem occurs when I try to return to my mainActivity the player runs again, thus getting 2 audios playing at the same time.
private Handler mainHandler;
private BandwidthMeter bandwidthMeter;
private TrackSelector trackSelector;
private TrackSelection.Factory trackSelectionFactory;
private LoadControl loadControl;
private SimpleExoPlayer player;
private DataSource.Factory dataSourceFactory;
private ExtractorsFactory extractorsFactory;
private MediaSource mediaSource;
private String radioUrl = "http://audio1.cmaudioevideo.com:8237/stream";
private ImageButton pause;
private ImageButton play;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
play = (ImageButton) findViewById(R.id.play) ;
pause = (ImageButton) findViewById(R.id.pause) ;
mainHandler = new Handler();
bandwidthMeter = new DefaultBandwidthMeter();
loadControl = new DefaultLoadControl();
extractorsFactory = new DefaultExtractorsFactory();
trackSelectionFactory = new AdaptiveVideoTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector(mainHandler,
trackSelectionFactory);
dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "mediaPlayerSample"),
(TransferListener<? super DataSource>) bandwidthMeter);
mediaSource = new ExtractorMediaSource(Uri.parse(radioUrl),
dataSourceFactory,
extractorsFactory,
null,
null);
player = ExoPlayerFactory.newSimpleInstance(getApplicationContext(),
trackSelector,
loadControl);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Log.v("TEST","playing state : " + player.getPlaybackState());
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
player.setPlayWhenReady(true);
play.setVisibility(View.GONE);
pause.setVisibility(View.VISIBLE);
}
});
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
player.setPlayWhenReady(false);
play.setVisibility(View.VISIBLE);
pause.setVisibility(View.GONE);
}
});
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.nav_sobre) {
Intent it_sobre = new Intent(MainActivity.this,SobreActivity.class);
startActivity(it_sobre);}
else if (id == R.id.nav_equipe) {
Intent it_valores = new Intent(MainActivity.this,EquipeActivity.class);
startActivity(it_valores);}
else if (id == R.id.nav_contato) {
Intent it_contato = new Intent(MainActivity.this,ContatoActivity.class);
startActivity(it_contato);}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
He did not recognize isPlaying() as a method, I located isLoading(), but I believe it would not be the same.
– Bruno Mendonça
The error persists
– Bruno Mendonça
This can never work. If the
onCreate()
was called because a new instance of Activity was created. Being a new instance the variableplayer
, or any other, no longer references the value assigned in the previous instance,– ramaral