Play notification default sound only (Android)

前端 未结 3 1217
半阙折子戏
半阙折子戏 2020-12-11 01:10

How can I play a notification sound only (without firing a status bar notification)? I want the notification default sound and play it exactly as a notification sound. Is it

相关标签:
3条回答
  • 2020-12-11 01:31
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(context.getApplicationContext(), notification);
    r.play();
    
    0 讨论(0)
  • 2020-12-11 01:41

    you can try this

    private void sendNotification(String title, String messageBody,String tag) {
    
        Intent intent;
        intent = new Intent(this, MainActivity.class);
        intent.setAction(tag);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);
        String channel_id=this.getResources().getString(R.string.app_name);
        Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle(title)
                .setContentText(messageBody)
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(messageBody))
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setChannelId(channel_id)
                .setContentIntent(pendingIntent);
    
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        NotificationChannel mChannel = null;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            mChannel = new NotificationChannel(channel_id, channel_id, NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(mChannel);
        }
        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    }
    } 
    
    0 讨论(0)
  • 2020-12-11 01:44
    Uri defaultRingtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    
    MediaPlayer mediaPlayer = new MediaPlayer();
    
    try {
          mediaPlayer.setDataSource(context, defaultRingtoneUri);
          mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
          mediaPlayer.prepare();
          mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
    
             @Override
             public void onCompletion(MediaPlayer mp)
             {
                mp.release();
             }
          });
      mediaPlayer.start();
    } catch (IllegalArgumentException e) {
     e.printStackTrace();
    } catch (SecurityException e) {
     e.printStackTrace();
    } catch (IllegalStateException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
    
    0 讨论(0)
提交回复
热议问题