Vibrate and Sound defaults on notification

后端 未结 9 1126
天涯浪人
天涯浪人 2020-12-04 07:37

I\'m trying to get a default vibrate and sound alert when my notification comes in, but so far no luck. I imagine it\'s something to do with the way I set the defaults, but

相关标签:
9条回答
  • 2020-12-04 08:11

    // set notification audio

    builder.setDefaults(Notification.DEFAULT_VIBRATE);
    //OR 
    builder.setDefaults(Notification.DEFAULT_SOUND);
    
    0 讨论(0)
  • 2020-12-04 08:18

    To support SDK version >= 26, you also should build NotificationChanel and set a vibration pattern and sound there. There is a Kotlin code sample:

        val vibrationPattern = longArrayOf(500)
        val soundUri = "<your sound uri>"
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                val notificationManager =    
                     getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
                val attr = AudioAttributes.Builder()
                            .setUsage(AudioAttributes.USAGE_ALARM)
                            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                            .build()
                val channelName: CharSequence = Constants.NOTIFICATION_CHANNEL_NAME
                val importance = NotificationManager.IMPORTANCE_HIGH
                val notificationChannel =
                    NotificationChannel(Constants.NOTIFICATION_CHANNEL_ID, channelName, importance)
                    notificationChannel.enableLights(true)
                    notificationChannel.lightColor = Color.RED
                    notificationChannel.enableVibration(true)
                    notificationChannel.setSound(soundUri, attr)
                    notificationChannel.vibrationPattern = vibrationPattern
                    notificationManager.createNotificationChannel(notificationChannel)
        }
    

    And this is the builder:

     with(NotificationCompat.Builder(applicationContext, Constants.NOTIFICATION_CHANNEL_ID)) {
            setContentTitle("Some title")
            setContentText("Some content")
            setSmallIcon(R.drawable.ic_logo)
            setAutoCancel(true)    
            setVibrate(vibrationPattern)
            setSound(soundUri)
            setDefaults(Notification.DEFAULT_VIBRATE)
            setContentIntent(
                // this is an extension function of context you should build
                // your own pending intent and place it here
                createNotificationPendingIntent(
                    Intent(applicationContext, target).apply {
                        flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
                    }
                )
            )
    
            return build()
        }
    

    Be sure your AudioAttributes are chosen right to read more here.

    0 讨论(0)
  • 2020-12-04 08:23

    Some dummy codes might help you.

       private static NotificationCompat.Builder buildNotificationCommon(Context _context, .....) {
                NotificationCompat.Builder builder = new NotificationCompat.Builder(_context)
                .setWhen(System.currentTimeMillis()).......;
         //Vibration
            builder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });
    
         //LED
            builder.setLights(Color.RED, 3000, 3000);
    
         //Ton
            builder.setSound(Uri.parse("uri://sadfasdfasdf.mp3"));
    
        return builder;
       }
    

    Add below permission for Vibration in AndroidManifest.xml file

    <uses-permission android:name="android.permission.VIBRATE" />
    
    0 讨论(0)
  • 2020-12-04 08:23

    This is a simple way to call notification by using default vibrate and sound from system.

    private void sendNotification(String message, String tick, String title, boolean sound, boolean vibrate, int iconID) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);
        Notification notification = new Notification();
    
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
    
        if (sound) {
            notification.defaults |= Notification.DEFAULT_SOUND;
        }
    
        if (vibrate) {
            notification.defaults |= Notification.DEFAULT_VIBRATE;
        }
    
        notificationBuilder.setDefaults(notification.defaults);
        notificationBuilder.setSmallIcon(iconID)
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
                .setTicker(tick)
                .setContentIntent(pendingIntent);
    
        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    
        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
    }
    

    Add vibrate permission if you are going to use it:

    <uses-permission android:name="android.permission.VIBRATE"/>
    

    Good luck,'.

    0 讨论(0)
  • 2020-12-04 08:26

    I m using the followung code and its working fine for me .

    private void sendNotification(String msg) {
        Log.d(TAG, "Preparing to send notification...: " + msg);
        mNotificationManager = (NotificationManager) this
                .getSystemService(Context.NOTIFICATION_SERVICE);
    
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, MainActivity.class), 0);
    
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
                this).setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle("GCM Notification")
                .setAutoCancel(true)
                .setDefaults(Notification.DEFAULT_ALL)
                .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
                .setContentText(msg);
    
        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
        Log.d(TAG, "Notification sent successfully.");
    }
    
    0 讨论(0)
  • 2020-12-04 08:32

    Notification Vibrate

    mBuilder.setVibrate(new long[] { 1000, 1000});
    

    Sound

    mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    

    for more sound option

    0 讨论(0)
提交回复
热议问题