Commit e7ba2caf by aquilescanta Committed by Oliver Woodman

Clear the media queue and stop casting on app pause

Simplifies the app and prevents inconsistent states between
both players and the media queue.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=183831329
parent 17edae65
...@@ -53,7 +53,8 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -53,7 +53,8 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
private PlayerView localPlayerView; private PlayerView localPlayerView;
private PlayerControlView castControlView; private PlayerControlView castControlView;
private PlayerManager playerManager; private PlayerManager playerManager;
private MediaQueueAdapter listAdapter; private RecyclerView mediaQueueList;
private MediaQueueListAdapter mediaQueueListAdapter;
private CastContext castContext; private CastContext castContext;
// Activity lifecycle methods. // Activity lifecycle methods.
...@@ -71,13 +72,12 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -71,13 +72,12 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
castControlView = findViewById(R.id.cast_control_view); castControlView = findViewById(R.id.cast_control_view);
RecyclerView sampleList = findViewById(R.id.sample_list); mediaQueueList = findViewById(R.id.sample_list);
ItemTouchHelper helper = new ItemTouchHelper(new RecyclerViewCallback()); ItemTouchHelper helper = new ItemTouchHelper(new RecyclerViewCallback());
helper.attachToRecyclerView(sampleList); helper.attachToRecyclerView(mediaQueueList);
sampleList.setLayoutManager(new LinearLayoutManager(this)); mediaQueueList.setLayoutManager(new LinearLayoutManager(this));
sampleList.setHasFixedSize(true); mediaQueueList.setHasFixedSize(true);
listAdapter = new MediaQueueAdapter(); mediaQueueListAdapter = new MediaQueueListAdapter();
sampleList.setAdapter(listAdapter);
findViewById(R.id.add_sample_button).setOnClickListener(this); findViewById(R.id.add_sample_button).setOnClickListener(this);
} }
...@@ -100,13 +100,15 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -100,13 +100,15 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
castControlView, castControlView,
/* context= */ this, /* context= */ this,
castContext); castContext);
mediaQueueList.setAdapter(mediaQueueListAdapter);
} }
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
mediaQueueListAdapter.notifyItemRangeRemoved(0, mediaQueueListAdapter.getItemCount());
mediaQueueList.setAdapter(null);
playerManager.release(); playerManager.release();
playerManager = null;
} }
// Activity input. // Activity input.
...@@ -129,10 +131,10 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -129,10 +131,10 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
@Override @Override
public void onQueuePositionChanged(int previousIndex, int newIndex) { public void onQueuePositionChanged(int previousIndex, int newIndex) {
if (previousIndex != C.INDEX_UNSET) { if (previousIndex != C.INDEX_UNSET) {
listAdapter.notifyItemChanged(previousIndex); mediaQueueListAdapter.notifyItemChanged(previousIndex);
} }
if (newIndex != C.INDEX_UNSET) { if (newIndex != C.INDEX_UNSET) {
listAdapter.notifyItemChanged(newIndex); mediaQueueListAdapter.notifyItemChanged(newIndex);
} }
} }
...@@ -142,14 +144,14 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -142,14 +144,14 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
View dialogList = getLayoutInflater().inflate(R.layout.sample_list, null); View dialogList = getLayoutInflater().inflate(R.layout.sample_list, null);
ListView sampleList = dialogList.findViewById(R.id.sample_list); ListView sampleList = dialogList.findViewById(R.id.sample_list);
sampleList.setAdapter(new SampleListAdapter(this)); sampleList.setAdapter(new SampleListAdapter(this));
sampleList.setOnItemClickListener(new OnItemClickListener() { sampleList.setOnItemClickListener(
new OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
playerManager.addItem(DemoUtil.SAMPLES.get(position)); playerManager.addItem(DemoUtil.SAMPLES.get(position));
listAdapter.notifyItemInserted(playerManager.getMediaQueueSize() - 1); mediaQueueListAdapter.notifyItemInserted(playerManager.getMediaQueueSize() - 1);
} }
}); });
return dialogList; return dialogList;
} }
...@@ -173,7 +175,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -173,7 +175,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
} }
private class MediaQueueAdapter extends RecyclerView.Adapter<QueueItemViewHolder> { private class MediaQueueListAdapter extends RecyclerView.Adapter<QueueItemViewHolder> {
@Override @Override
public QueueItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { public QueueItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
...@@ -219,7 +221,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -219,7 +221,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
draggingFromPosition = fromPosition; draggingFromPosition = fromPosition;
} }
draggingToPosition = toPosition; draggingToPosition = toPosition;
listAdapter.notifyItemMoved(fromPosition, toPosition); mediaQueueListAdapter.notifyItemMoved(fromPosition, toPosition);
return true; return true;
} }
...@@ -227,7 +229,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -227,7 +229,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition(); int position = viewHolder.getAdapterPosition();
if (playerManager.removeItem(position)) { if (playerManager.removeItem(position)) {
listAdapter.notifyItemRemoved(position); mediaQueueListAdapter.notifyItemRemoved(position);
} }
} }
...@@ -239,7 +241,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener, ...@@ -239,7 +241,7 @@ public class MainActivity extends AppCompatActivity implements OnClickListener,
if (!playerManager.moveItem(draggingFromPosition, draggingToPosition)) { if (!playerManager.moveItem(draggingFromPosition, draggingToPosition)) {
// The move failed. The entire sequence of onMove calls since the drag started needs to be // The move failed. The entire sequence of onMove calls since the drag started needs to be
// invalidated. // invalidated.
listAdapter.notifyDataSetChanged(); mediaQueueListAdapter.notifyDataSetChanged();
} }
} }
draggingFromPosition = C.INDEX_UNSET; draggingFromPosition = C.INDEX_UNSET;
......
...@@ -392,7 +392,9 @@ public final class CastPlayer implements Player { ...@@ -392,7 +392,9 @@ public final class CastPlayer implements Player {
@Override @Override
public void release() { public void release() {
castContext.getSessionManager().removeSessionManagerListener(statusListener, CastSession.class); SessionManager sessionManager = castContext.getSessionManager();
sessionManager.removeSessionManagerListener(statusListener, CastSession.class);
sessionManager.endCurrentSession(false);
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment