-Added dropdown menu for background player activity.
-Added icons for shuffle and drag handle. -Fixed exception when returning to background player activity after service shuts down. -Fixed open detail only working for Youtube.
 John Zhen M
					John Zhen M
				
			 John Zhen Mo
						John Zhen Mo
					
				
			| @@ -139,7 +139,10 @@ public final class BackgroundPlayer extends Service { | ||||
|         if (DEBUG) Log.d(TAG, "destroy() called"); | ||||
|         releaseWifiAndCpu(); | ||||
|         stopForeground(true); | ||||
|  | ||||
|         if (basePlayerImpl != null) basePlayerImpl.destroy(); | ||||
|         basePlayerImpl = null; | ||||
|         mBinder = null; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| package org.schabi.newpipe.player; | ||||
|  | ||||
| import android.content.ComponentName; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.content.ServiceConnection; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| import android.os.IBinder; | ||||
| import android.provider.Settings; | ||||
| import android.support.v7.app.AppCompatActivity; | ||||
| import android.support.v7.widget.LinearLayoutManager; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| @@ -24,16 +24,13 @@ import android.widget.TextView; | ||||
| import com.google.android.exoplayer2.PlaybackParameters; | ||||
| import com.google.android.exoplayer2.Player; | ||||
|  | ||||
| import org.schabi.newpipe.MainActivity; | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.extractor.StreamingService; | ||||
| import org.schabi.newpipe.extractor.stream.StreamInfo; | ||||
| import org.schabi.newpipe.playlist.PlayQueueItem; | ||||
| import org.schabi.newpipe.playlist.PlayQueueItemBuilder; | ||||
| import org.schabi.newpipe.playlist.PlayQueueItemHolder; | ||||
| import org.schabi.newpipe.settings.SettingsActivity; | ||||
| import org.schabi.newpipe.util.Constants; | ||||
| import org.schabi.newpipe.util.Localization; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.ThemeHelper; | ||||
|  | ||||
| public class BackgroundPlayerActivity extends AppCompatActivity | ||||
| @@ -101,15 +98,26 @@ public class BackgroundPlayerActivity extends AppCompatActivity | ||||
|         bind(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean onCreateOptionsMenu(Menu menu) { | ||||
|         getMenuInflater().inflate(R.menu.menu_play_queue, menu); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public boolean onOptionsItemSelected(MenuItem item) { | ||||
|         switch (item.getItemId()) { | ||||
|             case android.R.id.home: | ||||
|                 finish(); | ||||
|                 return true; | ||||
|             case R.id.action_history: | ||||
|                 NavigationHelper.openHistory(this); | ||||
|                 return true; | ||||
|             case R.id.action_settings: | ||||
|                 Intent intent = new Intent(this, SettingsActivity.class); | ||||
|                 startActivity(intent); | ||||
|                 NavigationHelper.openSettings(this); | ||||
|                 return true; | ||||
|             case R.id.action_system_audio: | ||||
|                 startActivity(new Intent(Settings.ACTION_SOUND_SETTINGS)); | ||||
|                 return true; | ||||
|         } | ||||
|         return super.onOptionsItemSelected(item); | ||||
| @@ -264,7 +272,7 @@ public class BackgroundPlayerActivity extends AppCompatActivity | ||||
|  | ||||
|     private void buildItemPopupMenu(final PlayQueueItem item, final View view) { | ||||
|         final PopupMenu menu = new PopupMenu(this, view); | ||||
|         final MenuItem remove = menu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 0, Menu.NONE, "Remove"); | ||||
|         final MenuItem remove = menu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 0, Menu.NONE, R.string.play_queue_remove); | ||||
|         remove.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { | ||||
|             @Override | ||||
|             public boolean onMenuItemClick(MenuItem menuItem) { | ||||
| @@ -274,11 +282,11 @@ public class BackgroundPlayerActivity extends AppCompatActivity | ||||
|             } | ||||
|         }); | ||||
|  | ||||
|         final MenuItem detail = menu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 1, Menu.NONE, "Detail"); | ||||
|         final MenuItem detail = menu.getMenu().add(RECYCLER_ITEM_POPUP_MENU_GROUP_ID, 1, Menu.NONE, R.string.play_queue_stream_detail); | ||||
|         detail.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { | ||||
|             @Override | ||||
|             public boolean onMenuItemClick(MenuItem menuItem) { | ||||
|                 onOpenDetail(BackgroundPlayerActivity.this, item.getUrl(), item.getTitle()); | ||||
|                 onOpenDetail(item.getServiceId(), item.getUrl(), item.getTitle()); | ||||
|                 return true; | ||||
|             } | ||||
|         }); | ||||
| @@ -346,15 +354,8 @@ public class BackgroundPlayerActivity extends AppCompatActivity | ||||
|         }; | ||||
|     } | ||||
|  | ||||
|     private void onOpenDetail(Context context, String videoUrl, String videoTitle) { | ||||
|         Intent i = new Intent(context, MainActivity.class); | ||||
|         i.putExtra(Constants.KEY_SERVICE_ID, 0); | ||||
|         i.putExtra(Constants.KEY_URL, videoUrl); | ||||
|         i.putExtra(Constants.KEY_TITLE, videoTitle); | ||||
|         i.putExtra(Constants.KEY_LINK_TYPE, StreamingService.LinkType.STREAM); | ||||
|         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | ||||
|         context.startActivity(i); | ||||
|         context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); | ||||
|     private void onOpenDetail(int serviceId, String videoUrl, String videoTitle) { | ||||
|         NavigationHelper.openVideoDetail(this, serviceId, videoUrl, videoTitle); | ||||
|     } | ||||
|  | ||||
|     private void scrollToSelected() { | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 107 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-hdpi/ic_reorder_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 110 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-hdpi/ic_shuffle_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 300 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 82 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-mdpi/ic_reorder_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 84 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-mdpi/ic_shuffle_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 217 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 101 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xhdpi/ic_reorder_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 93 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xhdpi/ic_shuffle_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 310 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 113 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxhdpi/ic_reorder_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 96 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxhdpi/ic_shuffle_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 486 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 116 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxxhdpi/ic_reorder_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 99 B | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable-xxxhdpi/ic_shuffle_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 517 B | 
| @@ -209,7 +209,7 @@ | ||||
|             android:clickable="true" | ||||
|             android:focusable="true" | ||||
|             android:scaleType="fitXY" | ||||
|             android:src="@drawable/ic_palette_white_24dp" | ||||
|             android:src="@drawable/ic_shuffle_white_24dp" | ||||
|             tools:ignore="ContentDescription"/> | ||||
|  | ||||
|         <TextView | ||||
|   | ||||
| @@ -29,8 +29,10 @@ | ||||
|         android:layout_height="match_parent" | ||||
|         android:layout_gravity="center_vertical" | ||||
|         android:layout_alignParentRight="true" | ||||
|         android:layout_marginLeft="10dp" | ||||
|         android:layout_marginRight="5dp" | ||||
|         android:scaleType="center" | ||||
|         android:src="?attr/filter" | ||||
|         android:src="?attr/reorder" | ||||
|         tools:ignore="ContentDescription,RtlHardcoded"/> | ||||
|  | ||||
|     <TextView | ||||
|   | ||||
							
								
								
									
										20
									
								
								app/src/main/res/menu/menu_play_queue.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     tools:context="org.schabi.newpipe.history.HistoryActivity"> | ||||
|  | ||||
|     <item android:id="@+id/action_history" | ||||
|         android:orderInCategory="981" | ||||
|         android:title="@string/action_history" | ||||
|         app:showAsAction="never"/> | ||||
|  | ||||
|     <item android:id="@+id/action_settings" | ||||
|         android:orderInCategory="990" | ||||
|         android:title="@string/settings" | ||||
|         app:showAsAction="never"/> | ||||
|  | ||||
|     <item android:id="@+id/action_system_audio" | ||||
|         android:orderInCategory="996" | ||||
|         android:title="@string/play_queue_audio_settings" | ||||
|         app:showAsAction="never"/> | ||||
| </menu> | ||||
| @@ -18,6 +18,7 @@ | ||||
|     <attr name="palette" format="reference"/> | ||||
|     <attr name="language" format="reference"/> | ||||
|     <attr name="history" format="reference"/> | ||||
|     <attr name="reorder" format="reference"/> | ||||
|  | ||||
|     <!-- Can't refer to colors directly into drawable's xml--> | ||||
|     <attr name="toolbar_shadow_drawable" format="reference"/> | ||||
|   | ||||
| @@ -293,6 +293,10 @@ | ||||
|     <string name="new_and_hot">New & hot</string> | ||||
|     <string name="service_kiosk_string" translatable="false">%1$s/%2$s</string> | ||||
|  | ||||
|     <!-- Player --> | ||||
|     <!-- Play Queue --> | ||||
|     <string name="title_activity_background_player">Background Player</string> | ||||
|     <string name="play_queue_remove">Remove</string> | ||||
|     <string name="play_queue_stream_detail">Details</string> | ||||
|     <string name="play_queue_audio_settings">Audio Settings</string> | ||||
|  | ||||
| </resources> | ||||
|   | ||||
| @@ -25,6 +25,7 @@ | ||||
|         <item name="palette">@drawable/ic_palette_black_24dp</item> | ||||
|         <item name="language">@drawable/ic_language_black_24dp</item> | ||||
|         <item name="history">@drawable/ic_history_black_24dp</item> | ||||
|         <item name="reorder">@drawable/ic_reorder_black_24dp</item> | ||||
|  | ||||
|         <item name="selector_color">@color/light_selector</item> | ||||
|         <item name="separator_color">@color/light_separator_color</item> | ||||
| @@ -60,6 +61,7 @@ | ||||
|         <item name="palette">@drawable/ic_palette_white_24dp</item> | ||||
|         <item name="language">@drawable/ic_language_white_24dp</item> | ||||
|         <item name="history">@drawable/ic_history_white_24dp</item> | ||||
|         <item name="reorder">@drawable/ic_reorder_white_24dp</item> | ||||
|  | ||||
|         <item name="selector_color">@color/dark_selector</item> | ||||
|         <item name="separator_color">@color/dark_separator_color</item> | ||||
|   | ||||