0

我有一个 MediaPlayer 服务,即使应用程序被最小化也可以播放歌曲。现在我想显示一个“玩家通知”让用户进行交互并且服务不会被杀死。我已经实现了这两个功能,但通知只是没有出现。我听到通知声音,当我转到应用程序信息时,我看到 2 个通知渠道,但没有通知。是因为我在服务中调用该方法吗?

@Override
    public void onCreate() {
        createNotificationChannel();
        mediaSession = new MediaSessionCompat(this, "PlayerAudio");
        showNotification();
    }

 private void createNotificationChannel(){

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            CharSequence name = "BaywatchBerlin";
            String description = "Mit Klaas Heufer Umlauf";
            int importance = NotificationManager.IMPORTANCE_LOW;
            NotificationChannel notificationChannel = new NotificationChannel("lemubitA", name, importance);
            notificationChannel.setDescription(description);
            notificationChannel.setSound(null, null);

            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(notificationChannel);
        }

    }

    public void showNotification(){
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

        Intent prevIntent = new Intent(this, NotificationReceiver.class).setAction(ACTION_PREV);
        PendingIntent prevPendingIntent = PendingIntent.getBroadcast(this, 0, prevIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Intent playIntent = new Intent(this, NotificationReceiver.class).setAction(ACTION_PLAY);
        PendingIntent playPendingIntent = PendingIntent.getBroadcast(this, 0, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Intent nextIntent = new Intent(this, NotificationReceiver.class).setAction(ACTION_NEXT);
        PendingIntent nextPendingIntent = PendingIntent.getBroadcast(this, 0, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Bitmap picture = BitmapFactory.decodeResource(getResources(), R.drawable.logonew);

        Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID_2)
                .setSmallIcon(R.drawable.logo)
                .setLargeIcon(picture)
                .setContentTitle(((ServiceState) this.getApplication()).getSongs().get(getPosition()).Name)
                .setContentText("Baywatch Berlin")
                .addAction(R.drawable.ic_skip_previous, "Previous", prevPendingIntent)
                .addAction(R.drawable.ic_play_arrow, "Play", playPendingIntent)
                .addAction(R.drawable.ic_skip_next, "Next", nextPendingIntent)
                .setStyle(new androidx.media.app.NotificationCompat.MediaStyle()
                    .setMediaSession(mediaSession.getSessionToken()))
                .setPriority(NotificationCompat.PRIORITY_LOW)
                .setContentIntent(contentIntent)
                .setOnlyAlertOnce(true)
                .build();
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.notify(0, notification);
    }
4

0 回答 0