Skip to content

Commit d5e4693

Browse files
author
Leo Neat
committed
Extract into functions
modified: mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java modified: mediacontroller/src/main/java/com/example/android/mediacontroller/MediaBrowseTreeSnapshot.kt modified: mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java modified: mediacontroller/src/main/java/com/example/android/mediacontroller/MediaBrowseTreeSnapshot.kt
1 parent 891ed0f commit d5e4693

File tree

2 files changed

+45
-79
lines changed

2 files changed

+45
-79
lines changed

mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,10 @@
3030
import android.graphics.drawable.Drawable;
3131
import android.media.AudioManager;
3232
import android.net.Uri;
33-
import android.os.Build;
3433
import android.os.Bundle;
35-
import android.os.Handler;
36-
import android.os.HandlerThread;
37-
import android.os.Looper;
3834
import android.os.RemoteException;
3935
import android.support.v4.media.MediaBrowserCompat;
4036
import android.support.v4.media.MediaBrowserCompat.MediaItem;
41-
import android.support.v4.media.MediaDescriptionCompat;
4237
import android.support.v4.media.MediaMetadataCompat;
4338
import android.support.v4.media.RatingCompat;
4439
import android.support.v4.media.session.MediaControllerCompat;
@@ -64,15 +59,13 @@
6459
import androidx.annotation.IdRes;
6560
import androidx.annotation.NonNull;
6661
import androidx.annotation.Nullable;
67-
import androidx.annotation.RequiresApi;
6862
import androidx.appcompat.app.ActionBar;
6963
import androidx.appcompat.app.AppCompatActivity;
7064
import androidx.appcompat.widget.Toolbar;
7165
import androidx.core.app.ActivityCompat;
7266
import androidx.core.content.ContextCompat;
7367
import androidx.core.content.res.ResourcesCompat;
7468
import androidx.core.graphics.drawable.DrawableCompat;
75-
import androidx.core.os.HandlerCompat;
7669
import androidx.media.MediaBrowserServiceCompat;
7770
import androidx.recyclerview.widget.DiffUtil;
7871
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -82,11 +75,6 @@
8275

8376
import com.google.android.material.tabs.TabLayout;
8477

85-
import java.io.File;
86-
import java.io.FileNotFoundException;
87-
import java.io.FileOutputStream;
88-
import java.io.IOException;
89-
import java.io.PrintWriter;
9078
import java.util.ArrayList;
9179
import java.util.Collections;
9280
import java.util.Comparator;
@@ -97,12 +85,6 @@
9785
import java.util.Map;
9886
import java.util.Set;
9987
import java.util.Stack;
100-
import java.util.concurrent.CompletableFuture;
101-
import java.util.concurrent.ExecutionException;
102-
import java.util.concurrent.ExecutorService;
103-
import java.util.concurrent.Executors;
104-
import java.util.concurrent.Semaphore;
105-
import java.util.concurrent.locks.Lock;
10688

10789
/**
10890
* This class connects to a {@link MediaBrowserServiceCompat}
@@ -146,10 +128,10 @@ public class MediaAppControllerActivity extends AppCompatActivity {
146128
private MediaBrowserCompat mBrowserExtraSuggested;
147129
private AudioFocusHelper mAudioFocusHelper;
148130
private RatingUiHelper mRatingUiHelper;
149-
private final CustomControlsAdapter mCustomControlsAdapter = new CustomControlsAdapter();
150-
private final BrowseMediaItemsAdapter mBrowseMediaItemsAdapter = new BrowseMediaItemsAdapter();
151-
private final BrowseMediaItemsAdapter mBrowseMediaItemsExtraSuggestedAdapter = new BrowseMediaItemsAdapter();
152-
private final SearchMediaItemsAdapter mSearchMediaItemsAdapter = new SearchMediaItemsAdapter();
131+
private CustomControlsAdapter mCustomControlsAdapter = new CustomControlsAdapter();
132+
private BrowseMediaItemsAdapter mBrowseMediaItemsAdapter = new BrowseMediaItemsAdapter();
133+
private BrowseMediaItemsAdapter mBrowseMediaItemsExtraSuggestedAdapter = new BrowseMediaItemsAdapter();
134+
private SearchMediaItemsAdapter mSearchMediaItemsAdapter = new SearchMediaItemsAdapter();
153135

154136
private ViewPager mViewPager;
155137
private Spinner mInputTypeView;
@@ -176,7 +158,7 @@ public class MediaAppControllerActivity extends AppCompatActivity {
176158
* @return An Intent that can be used to start the Activity.
177159
*/
178160
public static Intent buildIntent(final Activity activity,
179-
final MediaAppDetails appDetails) {
161+
final MediaAppDetails appDetails) {
180162
final Intent intent = new Intent(activity, MediaAppControllerActivity.class);
181163
intent.putExtra(APP_DETAILS_EXTRA, appDetails);
182164
return intent;
@@ -438,7 +420,6 @@ private void setupMedia() {
438420
public void onConnected() {
439421
setupMediaController();
440422
mBrowseMediaItemsAdapter.setRoot(mBrowser.getRoot());
441-
Log.i(TAG, "Root of browse tree connected");
442423
}
443424

444425
@Override
@@ -838,7 +819,7 @@ private void showActions(@PlaybackStateCompat.Actions long actions) {
838819
}
839820

840821
private boolean actionSupported(@PlaybackStateCompat.Actions long actions,
841-
@PlaybackStateCompat.Actions long checkAction) {
822+
@PlaybackStateCompat.Actions long checkAction) {
842823
return ((actions & checkAction) != 0);
843824
}
844825

@@ -865,8 +846,8 @@ private static class AudioFocusHelper
865846
private final Spinner mFocusTypeSpinner;
866847

867848
private AudioFocusHelper(@NonNull Context context,
868-
@NonNull ToggleButton focusToggleButton,
869-
@NonNull Spinner focusTypeSpinner) {
849+
@NonNull ToggleButton focusToggleButton,
850+
@NonNull Spinner focusTypeSpinner) {
870851

871852
mAudioManager = (AudioManager) context.getSystemService(AUDIO_SERVICE);
872853
mToggleButton = focusToggleButton;
@@ -984,7 +965,7 @@ public int getItemCount() {
984965
}
985966

986967
void setActions(MediaControllerCompat controller,
987-
List<PlaybackStateCompat.CustomAction> actions) {
968+
List<PlaybackStateCompat.CustomAction> actions) {
988969
mControls = controller.getTransportControls();
989970
try {
990971
mMediaAppResources = getPackageManager()
@@ -1046,9 +1027,9 @@ private static abstract class ModeHelper implements AdapterView.OnItemSelectedLi
10461027
private final List<Integer> modes;
10471028

10481029
ModeHelper(ViewGroup container,
1049-
@IdRes int stateSpinnerView,
1050-
@IdRes int iconImageView,
1051-
List<Integer> modes) {
1030+
@IdRes int stateSpinnerView,
1031+
@IdRes int iconImageView,
1032+
List<Integer> modes) {
10521033
this.context = container.getContext();
10531034
this.spinner = container.findViewById(stateSpinnerView);
10541035
this.icon = container.findViewById(iconImageView);
@@ -1161,8 +1142,7 @@ private class BrowseMediaItemsAdapter extends
11611142
new MediaBrowserCompat.SubscriptionCallback() {
11621143
@Override
11631144
public void onChildrenLoaded(@NonNull String parentId,
1164-
@NonNull List<MediaItem> children) {
1165-
Log.i(TAG, "Children loaded.");
1145+
@NonNull List<MediaItem> children) {
11661146
updateItemsEmptyIfNull(children);
11671147
}
11681148
};
@@ -1175,11 +1155,8 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
11751155
.inflate(R.layout.media_browse_item, parent, false));
11761156
}
11771157

1178-
1179-
11801158
@Override
11811159
public void onBindViewHolder(@NonNull ViewHolder holder, int position){
1182-
Log.i(TAG, "On Bind view holder");
11831160
if (mNodes.size() == 0) {
11841161
holder.name.setText(getString(R.string.media_no_browser));
11851162
holder.name.setVisibility(View.VISIBLE);
@@ -1190,7 +1167,6 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position){
11901167
return;
11911168
}
11921169
if (mItems == null) {
1193-
Log.i(TAG, "Setting to loading");
11941170
holder.name.setText(getString(R.string.media_browse_tree_loading));
11951171
holder.name.setVisibility(View.VISIBLE);
11961172
holder.description.setVisibility(View.GONE);
@@ -1200,7 +1176,6 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position){
12001176
return;
12011177
}
12021178
if (mItems.size() == 0) {
1203-
Log.i(TAG, "Setting to empty");
12041179
holder.name.setText(getString(R.string.media_browse_tree_empty));
12051180
holder.name.setVisibility(View.VISIBLE);
12061181
holder.description.setVisibility(View.GONE);
@@ -1209,7 +1184,6 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position){
12091184
});
12101185
return;
12111186
}
1212-
Log.i(TAG, "Populating media items");
12131187
final MediaBrowserCompat.MediaItem item = mItems.get(position);
12141188
holder.name.setText(item.getDescription().getTitle());
12151189
holder.name.setVisibility(View.VISIBLE);
@@ -1240,7 +1214,6 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position){
12401214
});
12411215
}
12421216

1243-
12441217
@Override
12451218
public int getItemCount() {
12461219
if (mNodes.size() == 0 || mItems == null || mItems.size() == 0) {
@@ -1251,15 +1224,13 @@ public int getItemCount() {
12511224

12521225
void updateItemsEmptyIfNull(List<MediaBrowserCompat.MediaItem> items) {
12531226
if (items == null) {
1254-
Log.i(TAG, "Trying to update an null list");
12551227
updateItems(Collections.emptyList());
12561228
} else {
12571229
updateItems(items);
12581230
}
12591231
}
12601232

12611233
void updateItems(List<MediaBrowserCompat.MediaItem> items) {
1262-
Log.i(TAG, "Updating items");
12631234
mItems = items;
12641235
notifyDataSetChanged();
12651236
}
@@ -1370,7 +1341,7 @@ protected void subscribe() {
13701341
mBrowser.search(getCurrentNode(), null, new MediaBrowserCompat.SearchCallback() {
13711342
@Override
13721343
public void onSearchResult(@NonNull String query, Bundle extras,
1373-
@NonNull List<MediaBrowserCompat.MediaItem> items) {
1344+
@NonNull List<MediaBrowserCompat.MediaItem> items) {
13741345
if (query.equals(getCurrentNode())) {
13751346
updateItemsEmptyIfNull(items);
13761347
}

mediacontroller/src/main/java/com/example/android/mediacontroller/MediaBrowseTreeSnapshot.kt

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,21 @@ import android.support.v4.media.MediaBrowserCompat.SubscriptionCallback
99
import android.util.Log
1010
import android.widget.Toast
1111
import java.io.File
12-
import java.io.FileNotFoundException
1312
import java.io.FileOutputStream
1413
import java.io.IOException
1514
import java.io.PrintWriter
1615
import java.util.concurrent.ExecutorService
1716
import java.util.concurrent.Executors
1817
import java.util.concurrent.Semaphore
1918

20-
class MediaBrowseTreeSnapshot(private val mBrowser : MediaBrowserCompat, private val mContext: Context) {
19+
class MediaBrowseTreeSnapshot(private val mBrowser: MediaBrowserCompat, private val mContext: Context) {
2120
private val TAG = "MediaBrowseTreeSnapshot"
2221

23-
24-
fun takeBrowserSnapshot(){
22+
fun takeBrowserSnapshot() {
2523
val loaded = Semaphore(1)
2624
val executorService = Executors.newFixedThreadPool(4)
2725
val mItems: MutableList<MediaBrowserCompat.MediaItem> = ArrayList()
28-
executorService.execute{
26+
executorService.execute {
2927
try {
3028
loaded.acquire()
3129
} catch (e: InterruptedException) {
@@ -42,25 +40,23 @@ class MediaBrowseTreeSnapshot(private val mBrowser : MediaBrowserCompat, private
4240
super.onChildrenLoaded(parentId, children)
4341
}
4442
})
43+
4544
// Wait for all of the media children to be loaded before starting snapshot
4645
try {
4746
loaded.acquire()
4847
} catch (e: InterruptedException) {
4948
e.printStackTrace()
5049
}
5150

52-
if(mItems.size > 0){
53-
takeBrowserSnapshotImpl(mItems, executorService)
54-
}
55-
else{
51+
if (mItems.size > 0) {
52+
initDFSOnBrowseTree(mItems, executorService)
53+
} else {
5654
notifyUser("No media items found, could not save tree.")
5755
}
58-
5956
}
6057
}
6158

62-
private fun takeBrowserSnapshotImpl(mItems: MutableList<MediaBrowserCompat.MediaItem>, executorService: ExecutorService){
63-
// Create output file
59+
private fun initDFSOnBrowseTree(mItems: MutableList<MediaBrowserCompat.MediaItem>, executorService: ExecutorService) {
6460
val root = Environment.getExternalStorageDirectory()
6561
val dirsPath = root.absolutePath + "/Temp/"
6662
val dirs = File(dirsPath)
@@ -73,35 +69,34 @@ class MediaBrowseTreeSnapshot(private val mBrowser : MediaBrowserCompat, private
7369
try {
7470
val f = FileOutputStream(file)
7571
val pw = PrintWriter(f)
76-
pw.println("Root:")
77-
val writeCompleted = Semaphore(1)
78-
executorService.execute {
79-
for (item in mItems) {
80-
try {
81-
writeCompleted.acquire()
82-
} catch (e: InterruptedException) {
83-
e.printStackTrace()
84-
}
85-
visitMediaItemNode(item, pw, 1,
86-
executorService)
87-
writeCompleted.release()
88-
}
89-
pw.flush()
90-
pw.close()
72+
runDFSOnBrowseTree(mItems, executorService, pw)
73+
pw.flush()
74+
pw.close()
75+
f.close()
76+
} catch (e: IOException) {
77+
e.printStackTrace()
78+
}
79+
notifyUser("MediaItems saved to " +
80+
file.absolutePath)
81+
}
82+
83+
private fun runDFSOnBrowseTree(mItems: MutableList<MediaBrowserCompat.MediaItem>, executorService: ExecutorService, printWriter: PrintWriter) {
84+
printWriter.println("Root:")
85+
val writeCompleted = Semaphore(1)
86+
executorService.execute {
87+
for (item in mItems) {
9188
try {
92-
f.close()
93-
} catch (e: IOException) {
89+
writeCompleted.acquire()
90+
} catch (e: InterruptedException) {
9491
e.printStackTrace()
9592
}
96-
notifyUser("MediaItems saved to " +
97-
file.absolutePath)
93+
visitMediaItemNode(item, printWriter, 1,
94+
executorService)
95+
writeCompleted.release()
9896
}
99-
} catch (e: FileNotFoundException) {
100-
e.printStackTrace()
10197
}
10298
}
10399

104-
105100
private fun visitMediaItemNode(mediaItem: MediaBrowserCompat.MediaItem?, printWriter: PrintWriter, depth: Int,
106101
executorService: ExecutorService) {
107102
if (mediaItem != null) {
@@ -137,7 +132,7 @@ class MediaBrowseTreeSnapshot(private val mBrowser : MediaBrowserCompat, private
137132
e.printStackTrace()
138133
}
139134

140-
// Run DFS on all of the nodes children
135+
// Run visit on all of the nodes children
141136
for (mediaItemChild in mChildren) {
142137
visitMediaItemNode(mediaItemChild, printWriter, depth + 1,
143138
executorService)
@@ -146,7 +141,7 @@ class MediaBrowseTreeSnapshot(private val mBrowser : MediaBrowserCompat, private
146141
}
147142
}
148143

149-
private fun printMediaItemDescription(printWriter: PrintWriter, mediaItem: MediaBrowserCompat.MediaItem, depth: Int){
144+
private fun printMediaItemDescription(printWriter: PrintWriter, mediaItem: MediaBrowserCompat.MediaItem, depth: Int) {
150145
val descriptionCompat = mediaItem.description
151146
// Tab the media item to the respective depth
152147
val tabStr = String(CharArray(depth)).replace("\u0000",

0 commit comments

Comments
 (0)