mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	made new notification layout available for older platforms
This commit is contained in:
		| @@ -205,9 +205,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare | ||||
|                 if(action.equals(ACTION_PLAYPAUSE)) { | ||||
|                     if(mediaPlayer.isPlaying()) { | ||||
|                         mediaPlayer.pause(); | ||||
|                         note.contentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_play_circle_filled_white_24dp); | ||||
|                         note.contentView.setImageViewResource(R.id.notificationPlayPause, R.drawable.ic_play_circle_filled_white_24dp); | ||||
|                         if(android.os.Build.VERSION.SDK_INT >=16){ | ||||
|                             note.bigContentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_play_circle_filled_white_24dp); | ||||
|                             note.bigContentView.setImageViewResource(R.id.notificationPlayPause, R.drawable.ic_play_circle_filled_white_24dp); | ||||
|                         } | ||||
|                         noteMgr.notify(noteID, note); | ||||
|                     } | ||||
| @@ -215,9 +215,9 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare | ||||
|                         //reacquire CPU lock after auto-releasing it on pause | ||||
|                         mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); | ||||
|                         mediaPlayer.start(); | ||||
|                         note.contentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_pause_white_24dp); | ||||
|                         note.contentView.setImageViewResource(R.id.notificationPlayPause, R.drawable.ic_pause_white_24dp); | ||||
|                         if(android.os.Build.VERSION.SDK_INT >=16){ | ||||
|                             note.bigContentView.setImageViewResource(R.id.backgroundPlayPause, R.drawable.ic_pause_white_24dp); | ||||
|                             note.bigContentView.setImageViewResource(R.id.notificationPlayPause, R.drawable.ic_pause_white_24dp); | ||||
|                         } | ||||
|                         noteMgr.notify(noteID, note); | ||||
|                     } | ||||
| @@ -275,11 +275,13 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare | ||||
|             */ | ||||
|  | ||||
|             //build intent to return to video, on tapping notification | ||||
|             Intent openDetailView = new Intent(getApplicationContext(), | ||||
|             Intent openDetailViewIntent = new Intent(getApplicationContext(), | ||||
|                     VideoItemDetailActivity.class); | ||||
|             openDetailView.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, serviceId); | ||||
|             openDetailView.putExtra(VideoItemDetailFragment.VIDEO_URL, webUrl); | ||||
|             openDetailView.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | ||||
|             openDetailViewIntent.putExtra(VideoItemDetailFragment.STREAMING_SERVICE, serviceId); | ||||
|             openDetailViewIntent.putExtra(VideoItemDetailFragment.VIDEO_URL, webUrl); | ||||
|             openDetailViewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | ||||
|             PendingIntent openDetailView = PendingIntent.getActivity(owner, noteID, | ||||
|                     openDetailViewIntent, PendingIntent.FLAG_UPDATE_CURRENT); | ||||
|  | ||||
|             noteBuilder | ||||
|                     .setOngoing(true) | ||||
| @@ -291,64 +293,29 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare | ||||
|                             String.format(res.getString( | ||||
|                                     R.string.background_player_time_text), title)) | ||||
|                     .setContentIntent(PendingIntent.getActivity(getApplicationContext(), | ||||
|                             noteID, openDetailView, | ||||
|                             noteID, openDetailViewIntent, | ||||
|                             PendingIntent.FLAG_UPDATE_CURRENT)); | ||||
|  | ||||
|  | ||||
|             if (android.os.Build.VERSION.SDK_INT < 21) { | ||||
|  | ||||
|                 NotificationCompat.Action playButton = new NotificationCompat.Action.Builder | ||||
|                         (R.drawable.ic_play_arrow_white_48dp, | ||||
|                                 res.getString(R.string.play_btn_text), playPI).build(); | ||||
|  | ||||
|                 noteBuilder | ||||
|                         .setContentTitle(title) | ||||
|                                 //really? Id like to put something more helpful here. | ||||
|                                 //was more of a placeholder than anything else. -medavox | ||||
|                                 //.setContentText("NewPipe is playing in the background") | ||||
|                         .setContentText(channelName) | ||||
|                                 //.setAutoCancel(!mediaPlayer.isPlaying()) | ||||
|                         .setDeleteIntent(stopPI) | ||||
|                                 //doesn't fit with Notification.MediaStyle | ||||
|                                 //.setProgress(vidLength, 0, false) | ||||
|                         .setLargeIcon(videoThumbnail) | ||||
|                         .addAction(playButton); | ||||
|                         //.setVisibility(NotificationCompat.VISIBILITY_PUBLIC) | ||||
|                         //.setLargeIcon(cover) | ||||
|  | ||||
|                 //is wrapping this in an SDK version check really necessary, | ||||
|                 // if we're using NotificationCompat? | ||||
|                 // the compat libraries should handle this, right? -medavox | ||||
|                 if (android.os.Build.VERSION.SDK_INT >= 16) | ||||
|                     noteBuilder.setPriority(Notification.PRIORITY_LOW); | ||||
|  | ||||
|                 noteBuilder.setStyle(new NotificationCompat.MediaStyle() | ||||
|                         //.setMediaSession(mMediaSession.getSessionToken()) | ||||
|                         .setShowActionsInCompactView(new int[]{0}) | ||||
|                         .setShowCancelButton(true) | ||||
|                         .setCancelButtonIntent(stopPI)); | ||||
|                 if (videoThumbnail != null) { | ||||
|                     noteBuilder.setLargeIcon(videoThumbnail); | ||||
|                 } | ||||
|                 note = noteBuilder.build(); | ||||
|             } else { | ||||
|             RemoteViews view = | ||||
|                     new RemoteViews(BuildConfig.APPLICATION_ID, R.layout.player_notification); | ||||
|                 view.setImageViewBitmap(R.id.backgroundCover, videoThumbnail); | ||||
|                 view.setTextViewText(R.id.backgroundSongName, title); | ||||
|                 view.setTextViewText(R.id.backgroundArtist, channelName); | ||||
|                 view.setOnClickPendingIntent(R.id.backgroundStop, stopPI); | ||||
|                 view.setOnClickPendingIntent(R.id.backgroundPlayPause, playPI); | ||||
|             view.setImageViewBitmap(R.id.notificationCover, videoThumbnail); | ||||
|             view.setTextViewText(R.id.notificationSongName, title); | ||||
|             view.setTextViewText(R.id.notificationArtist, channelName); | ||||
|             view.setOnClickPendingIntent(R.id.notificationStop, stopPI); | ||||
|             view.setOnClickPendingIntent(R.id.notificationPlayPause, playPI); | ||||
|             view.setOnClickPendingIntent(R.id.notificationBackgroundButton, openDetailView); | ||||
|  | ||||
|             //possibly found the expandedView problem, | ||||
|             //but can't test it as I don't have a 5.0 device. -medavox | ||||
|             RemoteViews expandedView = | ||||
|                     new RemoteViews(BuildConfig.APPLICATION_ID, R.layout.player_notification_expanded); | ||||
|                 expandedView.setImageViewBitmap(R.id.backgroundCover, videoThumbnail); | ||||
|                 expandedView.setTextViewText(R.id.backgroundSongName, title); | ||||
|                 expandedView.setTextViewText(R.id.backgroundArtist, channelName); | ||||
|                 expandedView.setOnClickPendingIntent(R.id.backgroundStop, stopPI); | ||||
|                 expandedView.setOnClickPendingIntent(R.id.backgroundPlayPause, playPI); | ||||
|             expandedView.setImageViewBitmap(R.id.notificationCover, videoThumbnail); | ||||
|             expandedView.setTextViewText(R.id.notificationSongName, title); | ||||
|             expandedView.setTextViewText(R.id.notificationArtist, channelName); | ||||
|             expandedView.setOnClickPendingIntent(R.id.notificationStop, stopPI); | ||||
|             expandedView.setOnClickPendingIntent(R.id.notificationPlayPause, playPI); | ||||
|             expandedView.setOnClickPendingIntent(R.id.notificationBackgroundButton, openDetailView); | ||||
|  | ||||
|             noteBuilder.setCategory(Notification.CATEGORY_TRANSPORT); | ||||
|  | ||||
| @@ -358,7 +325,7 @@ public class BackgroundPlayer extends Service /*implements MediaPlayer.OnPrepare | ||||
|             note = noteBuilder.build(); | ||||
|             note.contentView = view; | ||||
|  | ||||
|                 //todo: This never shows up. I was not able to figure out why: | ||||
|             if (android.os.Build.VERSION.SDK_INT > 16) { | ||||
|                 note.bigContentView = expandedView; | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:id="@+id/content" | ||||
|     android:layout_width="fill_parent" | ||||
| @@ -10,8 +10,20 @@ | ||||
|     android:background="@color/background_notification_color" | ||||
|     tools:targetApi="jelly_bean"> | ||||
|  | ||||
|     <Button | ||||
|         android:id="@+id/notificationBackgroundButton" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="64dp" | ||||
|         android:background="@android:color/transparent"/> | ||||
|  | ||||
|     <LinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="64dp" | ||||
|         android:gravity="center_vertical" | ||||
|         android:orientation="horizontal"> | ||||
|  | ||||
|         <ImageView | ||||
|         android:id="@+id/backgroundCover" | ||||
|             android:id="@+id/notificationCover" | ||||
|             android:layout_width="64dp" | ||||
|             android:layout_height="64dp" | ||||
|             android:src="@drawable/dummy_thumbnail" | ||||
| @@ -25,7 +37,7 @@ | ||||
|             android:orientation="vertical" > | ||||
|  | ||||
|             <TextView | ||||
|             android:id="@+id/backgroundSongName" | ||||
|                 android:id="@+id/notificationSongName" | ||||
|                 style="@android:style/TextAppearance.StatusBar.EventContent.Title" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
| @@ -34,7 +46,7 @@ | ||||
|                 android:text="title" /> | ||||
|  | ||||
|             <TextView | ||||
|             android:id="@+id/backgroundArtist" | ||||
|                 android:id="@+id/notificationArtist" | ||||
|                 style="@android:style/TextAppearance.StatusBar.EventContent" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
| @@ -44,7 +56,7 @@ | ||||
|         </LinearLayout> | ||||
|  | ||||
|         <ImageButton | ||||
|         android:id="@+id/backgroundPlayPause" | ||||
|             android:id="@+id/notificationPlayPause" | ||||
|             android:layout_width="40dp" | ||||
|             android:layout_height="40dp" | ||||
|             android:layout_margin="5dp" | ||||
| @@ -54,7 +66,7 @@ | ||||
|             android:src="@drawable/ic_pause_white_24dp" /> | ||||
|  | ||||
|         <ImageButton | ||||
|         android:id="@+id/backgroundStop" | ||||
|             android:id="@+id/notificationStop" | ||||
|             android:layout_width="40dp" | ||||
|             android:layout_height="40dp" | ||||
|             android:layout_margin="5dp" | ||||
| @@ -63,4 +75,7 @@ | ||||
|             android:scaleType="fitXY" | ||||
|             android:src="@drawable/ic_close_white_24dp" /> | ||||
|  | ||||
| </LinearLayout> | ||||
|     </LinearLayout> | ||||
|  | ||||
|  | ||||
| </RelativeLayout> | ||||
| @@ -8,8 +8,14 @@ | ||||
|     android:background="@color/background_notification_color" | ||||
|     tools:targetApi="jelly_bean" > | ||||
|  | ||||
|     <Button | ||||
|         android:id="@+id/notificationBackgroundButton" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="128dp" | ||||
|         android:background="@android:color/transparent"/> | ||||
|  | ||||
|     <ImageView | ||||
|         android:id="@+id/backgroundCover" | ||||
|         android:id="@+id/notificationCover" | ||||
|         android:layout_width="128dp" | ||||
|         android:layout_height="128dp" | ||||
|         android:layout_marginRight="8dp" | ||||
| @@ -19,13 +25,13 @@ | ||||
|     <LinearLayout | ||||
|         android:layout_width="fill_parent" | ||||
|         android:layout_height="fill_parent" | ||||
|         android:layout_above="@+id/backgroundButtons" | ||||
|         android:layout_toRightOf="@+id/backgroundCover" | ||||
|         android:layout_above="@+id/notificationButtons" | ||||
|         android:layout_toRightOf="@+id/notificationCover" | ||||
|         android:gravity="center_vertical" | ||||
|         android:orientation="vertical" > | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/backgroundSongName" | ||||
|             android:id="@+id/notificationSongName" | ||||
|             style="@android:style/TextAppearance.StatusBar.EventContent.Title" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
| @@ -35,7 +41,7 @@ | ||||
|             android:text="title" /> | ||||
|  | ||||
|         <TextView | ||||
|             android:id="@+id/backgroundArtist" | ||||
|             android:id="@+id/notificationArtist" | ||||
|             style="@android:style/TextAppearance.StatusBar.EventContent" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
| @@ -45,7 +51,7 @@ | ||||
|     </LinearLayout> | ||||
|  | ||||
|     <ImageButton | ||||
|         android:id="@+id/backgroundStop" | ||||
|         android:id="@+id/notificationStop" | ||||
|         android:layout_width="30dp" | ||||
|         android:layout_height="30dp" | ||||
|         android:layout_alignParentRight="true" | ||||
| @@ -56,16 +62,16 @@ | ||||
|         android:src="@drawable/ic_close_white_24dp" /> | ||||
|  | ||||
|     <RelativeLayout | ||||
|         android:id="@+id/backgroundButtons" | ||||
|         android:id="@+id/notificationButtons" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="50dp" | ||||
|         android:layout_alignBottom="@id/backgroundCover" | ||||
|         android:layout_alignBottom="@id/notificationCover" | ||||
|         android:layout_alignParentRight="true" | ||||
|         android:layout_toRightOf="@+id/backgroundCover" | ||||
|         android:layout_toRightOf="@+id/notificationCover" | ||||
|         android:orientation="horizontal" > | ||||
|  | ||||
|         <ImageButton | ||||
|             android:id="@+id/backgroundPlayPause" | ||||
|             android:id="@+id/notificationPlayPause" | ||||
|             android:layout_width="40dp" | ||||
|             android:layout_height="40dp" | ||||
|             android:background="#00ffffff" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Schabesberger
					Christian Schabesberger