unable to set push notification sound in android

12,935

Solution 1

I use the default notification sound. Maybe this will work:

mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);

Solution 2

mBuilder.setDefaults(Notification.DEFAULT_SOUND)

This worked for me, though the setDefaults() method does overwrite any vibration or LED light settings, so if you are wanting those as well you might have to set the sound directly. If default lights and/or vibration is fine you can bitwise OR the other static constants in Notification

Solution 3

I use this code:

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
r.play();
Share:
12,935
Somasundaram NP
Author by

Somasundaram NP

Android developer since oct 2014

Updated on July 21, 2022

Comments

  • Somasundaram NP
    Somasundaram NP almost 2 years

    I have created the push notification application, I'm getting the message from GCM services but push notification sound is not working. I need to play sound when I'm getting notification.I have posted my code below anyone help me with this...

    //receiver class//
    
    
    import android.app.Activity;
    import android.app.NotificationManager;
    import android.content.ComponentName;
    import android.content.Context;
    import android.content.Intent;
    import android.media.RingtoneManager;
    import android.net.Uri;
    import android.support.v4.content.WakefulBroadcastReceiver;
    import android.widget.Toast;
    
    public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
    
      @Override
      public void onReceive(Context context, Intent intent) 
      {
        ComponentName comp = new ComponentName(context.getPackageName(),GCMNotificationIntentService.class.getName());
    
        startWakefulService(context, (intent.setComponent(comp)));
    
        setResultCode(Activity.RESULT_OK);
    
        generateNotification(context);
    
        System.out.println("received push notification");
    
        Toast.makeText(context,"received notification",Toast.LENGTH_LONG).show();
      }
    
    private void generateNotification(Context context)
    {
        // TODO Auto-generated method stub
        /*NotificationManager mBuilder=(NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
    
        Uri notificationsound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    
        mBuilder.setSound(notificationsound);
        */
    }
    
    protected void onHandleIntent(Intent intent) {
        // TODO Auto-generated method stub
    
    }
    }
    
    
    
    
    package com.everest.jewellerapp;
    
    import android.app.IntentService;
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Color;
    import android.media.RingtoneManager;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.support.v4.app.NotificationCompat;
    import android.util.Log;
    import com.google.android.gms.gcm.GoogleCloudMessaging;
    
    public class GCMNotificationIntentService extends IntentService
    {
    
    
      public static final int NOTIFICATION_ID = 1;
    
      private NotificationManager mNotificationManager;
    
      NotificationCompat.Builder builder;
    
      public GCMNotificationIntentService() 
      {
        super("GcmIntentService");
      }
    
      public static final String TAG = "GCMNotificationIntentService";
    
      @Override
      protected void onHandleIntent(Intent intent) 
      {
        Bundle extras = intent.getExtras();
    
        GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    
        String messageType = gcm.getMessageType(intent);
    
        if (!extras.isEmpty()) 
        {
          if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) 
          {
            sendNotification("Send error: " + extras.toString());
          }
          else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) 
          {
            sendNotification("Deleted messages on server: "
                + extras.toString());
          } 
          else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) 
          {
    
            for (int i = 0; i < 3; i++) {
              Log.i(TAG,
                  "Working... " + (i + 1) + "/5 @ "
                      + SystemClock.elapsedRealtime());
              try 
              {
                Thread.sleep(5000);
              } 
              catch (InterruptedException e)
              {
              }
    
            }
            Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime());
    
            sendNotification("Message Received from Google GCM Server: "+ extras.get(Config.MESSAGE_KEY));
    
    
    
            Log.i(TAG, "Received: " + extras.toString());
          }
        }
        GcmBroadcastReceiver.completeWakefulIntent(intent);
      }
    
      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("ijeweller")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setContentText(msg);
    
        mBuilder.setContentIntent(contentIntent).setContentTitle("").setContentText("");
        mBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }); 
        mBuilder.setLights(Color.RED, 3000, 3000); 
    
    
        Uri notificationsound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    
        mBuilder.setSound(notificationsound);
    
    
        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
        Log.d(TAG, "Notification sent successfully.");
      }
    }
    

    permissions

    <uses-permission android:name="android.permission.INTERNET" />
    
    <!-- GCM requires a Google account. -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    
    <!-- Keeps the processor from sleeping when a message is received. -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    
    <!-- Creates a custom permission so only this app can receive its messages. -->
    <permission
        android:name="com.everest.jewellerapp.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    
    <uses-permission android:name="com.everest.jewellerapp.permission.C2D_MESSAGE" />
    
    <!-- This app has permission to register and receive data message. -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <!-- Network State Permissions to detect Internet status -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <!-- Permission to vibrate -->
    <uses-permission android:name="android.permission.VIBRATE" />
    
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
          <uses-permission android:name="android.permission.CALL_PHONE"/>
          <uses-permission android:name="android.permission.RECEIVE_MMS" />
          <uses-permission android:name="android.permission.RECEIVE_SMS" />
          <uses-permission android:name="android.permission.READ_SMS" />