From 567cb64cdf5aec6684c1ce65f6ec7adb4c9a63cd Mon Sep 17 00:00:00 2001 From: Chen Zhang Date: Tue, 24 Nov 2020 04:40:19 -0800 Subject: [PATCH 1/2] Adding a save button to save the content of the browser tree. --- mediacontroller/src/main/AndroidManifest.xml | 1 + .../MediaAppControllerActivity.java | 73 ++++++++++++++++++- .../src/main/res/layout/media_browse_tree.xml | 6 ++ .../src/main/res/values/strings.xml | 1 + 4 files changed, 79 insertions(+), 2 deletions(-) diff --git a/mediacontroller/src/main/AndroidManifest.xml b/mediacontroller/src/main/AndroidManifest.xml index d8c6932..692f7e5 100644 --- a/mediacontroller/src/main/AndroidManifest.xml +++ b/mediacontroller/src/main/AndroidManifest.xml @@ -17,6 +17,7 @@ xmlns:tools="http://schemas.android.com/tools" package="com.example.android.mediacontroller"> + diff --git a/mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java b/mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java index 0bed89e..c566ad8 100644 --- a/mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java +++ b/mediacontroller/src/main/java/com/example/android/mediacontroller/MediaAppControllerActivity.java @@ -248,7 +248,7 @@ public Object instantiateItem(@NonNull ViewGroup container, int position) { browseTreeList.setHasFixedSize(true); browseTreeList.setAdapter(mBrowseMediaItemsAdapter); mBrowseMediaItemsAdapter.init(findViewById(R.id.media_browse_tree_top), - findViewById(R.id.media_browse_tree_up)); + findViewById(R.id.media_browse_tree_up), findViewById(R.id.media_browse_tree_save)); final RecyclerView browseTreeListExtraSuggested = findViewById(R.id.media_items_list_extra_suggested); browseTreeListExtraSuggested.setLayoutManager(new LinearLayoutManager(this)); @@ -1206,7 +1206,7 @@ void updateItems(List items) { * Assigns click handlers to the buttons if provided for moving to the top of the tree or * for moving up one level in the tree. */ - void init(View topButtonView, View upButtonView) { + void init(View topButtonView, View upButtonView, View saveButtonView) { if (topButtonView != null) { topButtonView.setOnClickListener(v -> { if (mNodes.size() > 1) { @@ -1228,6 +1228,75 @@ void init(View topButtonView, View upButtonView) { } }); } + + if (saveButtonView != null) { + saveButtonView.setOnClickListener(v -> { + if (mNodes.isEmpty()) { + Toast toast = + Toast.makeText( + getApplicationContext(), "List Empty, nothing saved! ", Toast.LENGTH_LONG); + toast.setMargin(50, 50); + toast.show(); + return; + } + File root = android.os.Environment.getExternalStorageDirectory(); + File dir = new File(root.getAbsolutePath() + "/Temp"); + dir.mkdirs(); + File file = new File(dir, "_BrowseTreeContent.txt"); + if (file.exists()) { + file.delete(); + } + try { + FileOutputStream f = new FileOutputStream(file); + PrintWriter pw = new PrintWriter(f); + // We print the file path at the beginning of the file so that we can use it + // to pull the file from android to local computer in case user have forgotten. + pw.println(file.toString()); + + for (MediaBrowserCompat.MediaItem item : mItems) { + MediaDescriptionCompat descriptionCompat = item.getDescription(); + if (descriptionCompat != null) { + String infoStr = + "Title:" + descriptionCompat.getTitle() != null + ? descriptionCompat.getTitle().toString() + : "NAN"; + infoStr += + ",Subtitle:" + descriptionCompat.getSubtitle() != null + ? descriptionCompat.getSubtitle().toString() + : "NAN"; + infoStr += + ",MediaId:" + descriptionCompat.getMediaId() != null + ? descriptionCompat.getMediaId().toString() + : "NAN"; + infoStr += + ",Uri:" + descriptionCompat.getMediaUri() != null + ? descriptionCompat.getMediaUri().toString() + : "NAN"; + infoStr += + ",Description:" + descriptionCompat.getDescription() != null + ? descriptionCompat.getDescription().toString() + : "NAN"; + pw.println(infoStr); + } + } + + pw.flush(); + pw.close(); + f.close(); + Toast toast = + Toast.makeText( + getApplicationContext(), + "MediaItems saved to " + file.getAbsolutePath(), + Toast.LENGTH_LONG); + toast.setMargin(50, 50); + toast.show(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } } protected void subscribe() { diff --git a/mediacontroller/src/main/res/layout/media_browse_tree.xml b/mediacontroller/src/main/res/layout/media_browse_tree.xml index af8d11d..437a685 100644 --- a/mediacontroller/src/main/res/layout/media_browse_tree.xml +++ b/mediacontroller/src/main/res/layout/media_browse_tree.xml @@ -44,6 +44,12 @@ android:layout_height="wrap_content" android:text="@string/media_browse_tree_up" /> +