2017-09-03 43 views
16

Mam niestandardowy dźwięk w formacie MP3, którego używam w swoich powiadomieniach. Działa dobrze na wszystkich urządzeniach poniżej interfejsu API 26. Próbowałem również ustawić dźwięk w kanale powiadomień, ale nadal nie działa. Odtwarza dźwięk domyślny.Dźwięk powiadomienia w interfejsie API 26

NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId) 
      .setAutoCancel(true) 
      .setSmallIcon(R.drawable.icon_push) 
      .setColor(ContextCompat.getColor(this, R.color.green)) 
      .setContentTitle(title) 
      .setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification)) 
      .setDefaults(Notification.DEFAULT_VIBRATE) 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(message)) 
      .setContentText(message); 
     Notification notification = builder.build(); 
     NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { 
      NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT); 
      AudioAttributes audioAttributes = new AudioAttributes.Builder() 
        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) 
        .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE) 
        .build(); 
      channel.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notification), audioAttributes); 
      notificationManager.createNotificationChannel(channel); 
     } 
     notificationManager.notify(1, notification); 
+0

zrobiłeś domyślny dźwięk powiadomienia wyciszenia? również mam ten sam problem. Nie chcę odtwarzać żadnego dźwięku po powiadomieniu za pomocą NotificationManager.IMPORTANCE_MAX. Czy możesz mi w tym pomóc? –

Odpowiedz

7

Użyłem RingtoneManager i to jest praca dla mnie. Wypróbuj kod thius:

NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); 
    builder.setSmallIcon(android.R.drawable.ic_dialog_alert); 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/")); 
    PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); 
    builder.setContentIntent(pendingIntent); 
    builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); 
    builder.setContentTitle("Notification title"); 
    builder.setContentText("Notification message."); 
    builder.setSubText("Url link."); 

    try { 
     Uri notification = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.custom_ringtone); 
     Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
     r.play(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    NotificationManager notificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(1, builder.build()); 
+0

Dzięki. To działa. –

+0

Z mojego doświadczenia wynika, że ​​w kółko odtwarza się dźwięk. – HoseinIT

+0

Problem z tym rozwiązaniem polega na tym, że użytkownicy nie mogą wyciszyć dźwięku powiadomienia. Zawsze odtwarza dźwięk. –

12

Być może kanał został utworzony z domyślnym dźwiękiem. Po utworzeniu kanału nie można go zmienić. Musisz albo ponownie zainstalować aplikację, albo utworzyć kanał z nowym identyfikatorem kanału.

+0

Próbowałem zmienić nazwę kanału, ale nadal nie działa. –

+0

Mały świat :-) Dzięki Paweł zaoszczędziłeś mi dużo czasu! –

+0

Aby zmienić znaczenie, dźwięk, światła, wibracje, ekran blokady lub ustawienia DND, odinstaluj aplikację i zainstaluj ponownie, aby wyczyścić kanał. Zobacz https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ManageChannels, szczególnie sekcja zatytułowana "Usuwanie kanału powiadomień" – BitByteDog

1

Domyślny dźwięk zastępuje dźwięk.

trzeba umieścić to w kodzie:

notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE; 

referencyjny:

Android notifications

+0

Nadal nie działa. –

+4

Musisz wyczyścić kanały testowe, ponownie instalując aplikację lub usuwając dane powiązane z aplikacją, zanim dodasz kod !!!! –

+0

Ok. Spróbuję ponownie dziś wieczorem. Dzięki. –