package com.github.libretube.util import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.Bitmap import android.graphics.BitmapFactory import com.github.libretube.activities.MainActivity import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.ui.PlayerNotificationManager import java.net.URL /** * The [DescriptionAdapter] is used to show title, uploaderName and thumbnail of the video in the notification * Basic example [here](https://github.com/AnthonyMarkD/AudioPlayerSampleTest) */ class DescriptionAdapter( private val title: String, private val channelName: String, private val thumbnailUrl: String, private val context: Context ) : PlayerNotificationManager.MediaDescriptionAdapter { /** * sets the title of the notification */ override fun getCurrentContentTitle(player: Player): CharSequence { // return controller.metadata.description.title.toString() return title } /** * overrides the action when clicking the notification */ override fun createCurrentContentIntent(player: Player): PendingIntent? { // return controller.sessionActivity /** * starts a new MainActivity Intent when the player notification is clicked * it doesn't start a completely new MainActivity because the MainActivity's launchMode * is set to "singleTop" in the AndroidManifest (important!!!) * that's the only way to launch back into the previous activity (e.g. the player view */ val intent = Intent(context, MainActivity::class.java) return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE) } /** * the description of the notification (below the title) */ override fun getCurrentContentText(player: Player): CharSequence? { // return controller.metadata.description.subtitle.toString() return channelName } /** * return the icon/thumbnail of the video */ override fun getCurrentLargeIcon( player: Player, callback: PlayerNotificationManager.BitmapCallback ): Bitmap? { lateinit var bitmap: Bitmap /** * running on a new thread to prevent a NetworkMainThreadException */ val thread = Thread { try { /** * try to GET the thumbnail from the URL */ val inputStream = URL(thumbnailUrl).openStream() bitmap = BitmapFactory.decodeStream(inputStream) } catch (ex: java.lang.Exception) { ex.printStackTrace() } } thread.start() thread.join() /** * returns the scaled bitmap if it got fetched successfully */ return try { val resizedBitmap = Bitmap.createScaledBitmap( bitmap, bitmap.width, bitmap.width, false ) resizedBitmap } catch (e: Exception) { null } } }