artemx32

Untitled

May 28th, 2021 (edited)
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.38 KB | None | 0 0
  1. package com.example.vkplaya21;
  2.  
  3. import static com.example.vkplaya21.CreateNotification.mediaSession;
  4.  
  5.  
  6.  
  7. import android.annotation.SuppressLint;
  8. import android.app.ActionBar;
  9. import android.app.Notification;
  10. import android.app.NotificationChannel;
  11. import android.app.NotificationManager;
  12. import android.app.Service;
  13. import android.content.BroadcastReceiver;
  14. import android.content.ComponentName;
  15. import android.content.Context;
  16. import android.content.DialogInterface;
  17. import android.content.Intent;
  18. import android.content.IntentFilter;
  19. import android.content.SharedPreferences;
  20. import android.content.res.Resources;
  21. import android.graphics.Color;
  22. import android.media.AudioManager;
  23. import android.media.MediaPlayer;
  24. import android.net.Uri;
  25. import android.os.Build;
  26. import android.os.Bundle;
  27. import android.os.Handler;
  28. import android.os.IBinder;
  29. import android.os.PowerManager;
  30. import android.provider.MediaStore;
  31. import android.provider.Settings;
  32. import android.util.Log;
  33.  
  34. import android.app.Notification;
  35. import android.app.PendingIntent;
  36. import android.app.Service;
  37. import android.content.BroadcastReceiver;
  38. import android.content.ComponentName;
  39. import android.content.Context;
  40. import android.content.Intent;
  41. import android.graphics.Bitmap;
  42. import android.graphics.BitmapFactory;
  43. import android.media.session.MediaSession;
  44. import android.os.Build;
  45. import android.os.Bundle;
  46. import android.os.IBinder;
  47. import android.os.ResultReceiver;
  48. import android.support.v4.media.session.MediaSessionCompat;
  49. import android.util.Log;
  50. import android.view.KeyEvent;
  51. import android.widget.EditText;
  52.  
  53. import androidx.annotation.Nullable;
  54. import androidx.core.app.NotificationCompat;
  55. import androidx.core.app.NotificationManagerCompat;
  56.  
  57. import com.example.vkplaya21.Services.BackgroundSoundService;
  58. import com.example.vkplaya21.Services.NotificationActionService;
  59.  
  60. public class CreateNotification extends Service {
  61.  
  62.     public static final String CHANNEL_ID = "channel1";
  63.  
  64.     public static MediaSession mediaSession;
  65.  
  66.     public static final String ACTION_PREVIUOS = "actionprevious";
  67.     public static final String ACTION_PLAY = "actionplay";
  68.     public static final String ACTION_NEXT = "actionnext";
  69.  
  70.     public static Notification notification;
  71.  
  72.     public static void createNotification(Context context, Track track, int playbutton, int pos, int size){
  73.  
  74.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
  75.  
  76.             NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
  77.             MediaSessionCompat mediaSessionCompat = new MediaSessionCompat( context, "tag");
  78.  
  79.             Bitmap icon = BitmapFactory.decodeResource(context.getResources(), track.getImage());
  80.  
  81.             PendingIntent pendingIntentPrevious;
  82.             int drw_previous;
  83.             if (pos == 0){
  84.                 pendingIntentPrevious = null;
  85.                 drw_previous = 0;
  86.             } else {
  87.                 Intent intentPrevious = new Intent(context, NotificationActionService.class)
  88.                         .setAction(ACTION_PREVIUOS);
  89.                 pendingIntentPrevious = PendingIntent.getBroadcast(context, 0,
  90.                         intentPrevious, PendingIntent.FLAG_UPDATE_CURRENT);
  91.                 drw_previous = R.drawable.ic_fast_rewind;
  92.             }
  93.  
  94.             Intent intentPlay = new Intent(context, NotificationActionService.class)
  95.                     .setAction(ACTION_PLAY);
  96.             PendingIntent pendingIntentPlay = PendingIntent.getBroadcast(context, 0,
  97.                     intentPlay, PendingIntent.FLAG_UPDATE_CURRENT);
  98.  
  99.             PendingIntent pendingIntentNext;
  100.             int drw_next;
  101.             if (pos == size){
  102.                 pendingIntentNext = null;
  103.                 drw_next = 0;
  104.             } else {
  105.                 Intent intentNext = new Intent(context, NotificationActionService.class)
  106.                         .setAction(ACTION_NEXT);
  107.                 pendingIntentNext = PendingIntent.getBroadcast(context, 0,
  108.                         intentNext, PendingIntent.FLAG_UPDATE_CURRENT);
  109.                 drw_next = R.drawable.ic_fast_forward;
  110.             }
  111.  
  112.             //create notification
  113.             notification = new NotificationCompat.Builder(context, CHANNEL_ID)
  114.                     .setSmallIcon(R.drawable.logo)
  115.                     .setContentTitle(track.getTitle())
  116.                     .setContentText(track.getArtist())
  117.                     .setLargeIcon(icon)
  118.                     //.setOnlyAlertOnce(true)//show notification for only first time
  119.                     .setShowWhen(false)
  120.                     .setOngoing(true)
  121.                     .addAction(drw_previous, "Previous", pendingIntentPrevious)
  122.                     .addAction(playbutton, "Play", pendingIntentPlay)
  123.                     .addAction(drw_next, "Next", pendingIntentNext)
  124.                     .setStyle(new androidx.media.app.NotificationCompat.MediaStyle()
  125.                             .setShowActionsInCompactView(0, 1, 2)
  126.                             .setMediaSession(mediaSessionCompat.getSessionToken()))
  127.                     .setPriority(NotificationCompat.PRIORITY_MAX)
  128.                     .build();
  129.  
  130.             notification.flags = Notification.FLAG_NO_CLEAR;
  131.  
  132.             notificationManagerCompat.notify(1, notification);
  133.  
  134.             startForeground(1, notification);
  135.            
  136.             /**
  137.  
  138.             ComponentName mediaButtonReceiver =
  139.                     new ComponentName(context, BroadcastReceiver.class);
  140.             MediaSessionCompat mediaSession =
  141.                     new MediaSessionCompat(context,
  142.                             "tag", // Debugging tag, any string
  143.                             mediaButtonReceiver,
  144.                             null);
  145.             mediaSession.setFlags(
  146.                     MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
  147.                             MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
  148.             //mediaSession.setCallback(this);
  149.  
  150.             mediaSession.setCallback(new MediaSessionCompat.Callback() {
  151.  
  152.                 @Override
  153.                 public void onCommand(String command, Bundle extras, ResultReceiver cb) {
  154.                     super.onCommand(command, extras, cb);
  155.  
  156.                     Log.d("hui", "a");
  157.                 }
  158.  
  159.  
  160.  
  161.                 @Override
  162.                 public void onCustomAction(String action, Bundle extras) {
  163.                     super.onCustomAction(action, extras);
  164.                 }
  165.  
  166.                 @Override
  167.                 public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
  168.                     if (Intent.ACTION_MEDIA_BUTTON.equals(mediaButtonEvent.getAction())) {
  169.                         final KeyEvent keyEvent = mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
  170.                         if (KeyEvent.ACTION_DOWN == keyEvent.getAction()) {
  171.                             Log.d("hui", "Media button down!");
  172.                         }
  173.                     } else {
  174.                         Log.d( "hui", "hz intent: " + mediaButtonEvent.getAction());
  175.                     }
  176.                     return true;
  177.                 }
  178.             });
  179.  
  180.             mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS);
  181.             mediaSession.setActive(true);
  182.  
  183.              **/
  184.  
  185.         }
  186.     }
  187.  
  188.     @Nullable
  189.     @Override
  190.     public IBinder onBind(Intent intent) {
  191.         return null;
  192.     }
  193. }
  194.  
Add Comment
Please, Sign In to add comment