164

I've used the newer NotificationCompat builder and I can't get the notification to make a sound. It will vibrate and flash the light. The android documentation says to set a style which I've done with:

builder.setStyle(new NotificationCompat.InboxStyle());

But no sound?

The full code:

NotificationCompat.Builder builder =  
        new NotificationCompat.Builder(this)  
        .setSmallIcon(R.drawable.ic_launcher)  
        .setContentTitle("Notifications Example")  
        .setContentText("This is a test notification");  


Intent notificationIntent = new Intent(this, MenuScreen.class);  

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,   
        PendingIntent.FLAG_UPDATE_CURRENT);  

builder.setContentIntent(contentIntent);  
builder.setAutoCancel(true);
builder.setLights(Color.BLUE, 500, 500);
long[] pattern = {500,500,500,500,500,500,500,500,500};
builder.setVibrate(pattern);
builder.setStyle(new NotificationCompat.InboxStyle());
// Add as notification  
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
manager.notify(1, builder.build());  
4

18 に答える 18

267

以前のコードに欠けていたもの:

Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(alarmSound);
于 2013-04-06T20:06:23.103 に答える
164

サウンドファイルをRes\raw\siren.mp3フォルダに入れて、次のコードを使用してください。

カスタムサウンドの場合:

Notification notification = builder.build();
notification.sound = Uri.parse("android.resource://"
            + context.getPackageName() + "/" + R.raw.siren);

デフォルトのサウンド:

notification.defaults |= Notification.DEFAULT_SOUND;

カスタム バイブレーションの場合:

long[] vibrate = { 0, 100, 200, 300 };
notification.vibrate = vibrate;

デフォルトの振動:

notification.defaults |= Notification.DEFAULT_VIBRATE;
于 2013-08-01T12:11:34.470 に答える
55

デフォルトのサウンドの別の方法

builder.setDefaults(Notification.DEFAULT_SOUND);
于 2014-12-05T05:41:46.153 に答える
13

Oreo (Android 8) 以降では、カスタム サウンドに対して次の方法で行う必要があります (通知チャネル)。

Uri soundUri = Uri.parse(
                         "android.resource://" + 
                         getApplicationContext().getPackageName() +
                         "/" + 
                         R.raw.push_sound_file);

AudioAttributes audioAttributes = new AudioAttributes.Builder()
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .setUsage(AudioAttributes.USAGE_ALARM)
            .build();

// Creating Channel
NotificationChannel channel = new NotificationChannel("YOUR_CHANNEL_ID",
                                                      "YOUR_CHANNEL_NAME",
                                                      NotificationManager.IMPORTANCE_HIGH);
channel.setSound(soundUri, audioAttributes);

((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE))
                                           .createNotificationChannel(notificationChannel);
于 2018-09-18T20:35:37.393 に答える
10

以下の簡単なコードを入れるだけです:

notification.sound = Uri.parse("android.resource://"
        + context.getPackageName() + "/" + R.raw.sound_file);

デフォルトのサウンド:

notification.defaults |= Notification.DEFAULT_SOUND;
于 2013-09-07T04:59:15.230 に答える
6

ビルダーを使用する必要があります。setSound

Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);  

                PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent,   
                        PendingIntent.FLAG_UPDATE_CURRENT);  

                builder.setContentIntent(contentIntent);  
                builder.setAutoCancel(true);
                builder.setLights(Color.BLUE, 500, 500);
                long[] pattern = {500,500,500,500,500,500,500,500,500};
                builder.setVibrate(pattern);
                builder.setStyle(new NotificationCompat.InboxStyle());
                 Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
                    if(alarmSound == null){
                        alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
                        if(alarmSound == null){
                            alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                        }
                    }

                // Add as notification  
                NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
             builder.setSound(alarmSound);
                manager.notify(1, builder.build());  
于 2013-04-08T06:24:03.630 に答える
5

まず、「yourmp3file」.mp3 ファイルを raw フォルダー (Res フォルダー内) に配置します。

コードの2番目に..

Notification noti = new Notification.Builder(this)
.setSound(Uri.parse("android.resource://" + v.getContext().getPackageName() + "/" + R.raw.yourmp3file))//*see note

これは、コンテキストを取得しないため、「context().getPackageName()」のみがそこから機能しないため、onClick(View v) の中に入れたものです。

于 2015-12-01T14:42:50.257 に答える
1
notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
于 2015-08-14T02:55:52.720 に答える