Android अधिसूचना ध्वनि


152

मैंने नए NotificationCompat बिल्डर का उपयोग किया है और मुझे ध्वनि बनाने के लिए सूचना नहीं मिल सकती है। यह प्रकाश को कंपन और फ्लैश करेगा। Android प्रलेखन एक शैली सेट करने के लिए कहता है, जिसे मैंने किया है:

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

लेकिन कोई आवाज नहीं?

पूर्ण कोड:

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());  

12
बिल्डर.सेटसाउंड (Settings.System.DEFAULT_NOTIFICATION_URI) को भी काम करना चाहिए
Zar E Ahmer

जवाबों:


256

मेरे पिछले कोड से क्या गायब था:

Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
builder.setSound(alarmSound);

4
यह खेलता रहता है और रुकता नहीं है, मैं इसे केवल एक बार कैसे बजाऊं? बिल्डर का उपयोग करके। setOnlyOnce (सच); मदद नहीं करता
सालिस

इसका एक बार का नाटक
काला हांक

2
buildder.setOnlyOnce (true) ने मेरे मामले में मेरी समस्या हल कर दी!
एलोज्कर

155

अपनी ध्वनि फ़ाइल को 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;

52

डिफ़ॉल्ट ध्वनि के लिए एक और तरीका है

builder.setDefaults(Notification.DEFAULT_SOUND);

12

उपयोग कोडिंग कर सकते हैं

 String en_alert, th_alert, en_title, th_title, id;
 int noti_all, noti_1, noti_2, noti_3, noti_4 = 0, Langage;

 class method
 Intent intent = new Intent(context, ReserveStatusActivity.class);
 PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

 NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);


 intent = new Intent(String.valueOf(PushActivity.class));
 intent.putExtra("message", MESSAGE);
 TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
 stackBuilder.addParentStack(PushActivity.class);
 stackBuilder.addNextIntent(intent);
 // PendingIntent pendingIntent =
 stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

 //      android.support.v4.app.NotificationCompat.BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
 //        bigStyle.bigText((CharSequence) context);



 notification = new NotificationCompat.Builder(context)
    .setSmallIcon(R.mipmap.ic_launcher)
    .setContentTitle(th_title)
    .setContentText(th_alert)
    .setAutoCancel(true)

 // .setStyle(new Notification.BigTextStyle().bigText(th_alert)  ตัวเก่า
 //

 .setStyle(new NotificationCompat.BigTextStyle().bigText(th_title))

    .setStyle(new NotificationCompat.BigTextStyle().bigText(th_alert))

    .setContentIntent(pendingIntent)
    .setNumber(++numMessages)


    .build();

 notification.sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

 notificationManager.notify(1000, notification);

10

बस नीचे सरल कोड डाल:

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

डिफ़ॉल्ट ध्वनि के लिए:

notification.defaults |= Notification.DEFAULT_SOUND;

8

आपको RingtoneManager का उपयोग करना होगा

private static final int MY_NOTIFICATION_ID = 1;
    private NotificationManager notificationManager;
    private Notification myNotification;

    private final String myBlog = "http://niravranpara.blogspot.com/";

अलार्म रिंगटोन के साथ noficationmanager के लिए कोड आप रिंग टोन RingtoneManager.TYPE_RINGTONE भी सेट कर सकते हैं

notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri
                        .parse(myBlog));
                  PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                    Notification note = new Notification(R.drawable.ic_launcher, "Alarm", System.currentTimeMillis());
                    note.setLatestEventInfo(getApplicationContext(), "Alarm", "sound" + " (alarm)", pi);
                    Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
                    if(alarmSound == null){
                        alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
                        if(alarmSound == null){
                            alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                        }
                    }
                    note.sound = alarmSound;
                    note.defaults |= Notification.DEFAULT_VIBRATE;
                    note.flags |= Notification.FLAG_AUTO_CANCEL;
                    notificationManager.notify(MY_NOTIFICATION_ID, note);

क्षमा करें, यह आपने नए NotificationCompat.Builder के लिए कैसे नहीं किया है।
जेम्स एमवी

अधिसूचना NotificationCompat.Builder.build () फ़ंक्शन के साथ बनाई जा सकती है और बिल्ड () का रिटर्न मान लेना ठीक है और NotificationManager.notify पर जाने से पहले इसके मूल्यों को संशोधित करें। यह बहुत मतलब नहीं है, लेकिन यह पूरी तरह से ठीक है।
होल्गाक

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());  

1
आपने दो बार RingtoneManager.TYPE_RINGTONE लिखा है।
बर्नार्डो फेरारी

6

आप एक समारोह बना सकते हैं:

public void playNotificationSound() 
{
    try
    {

        Uri alarmSound = `Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + MyApplication.getInstance().getApplicationContext().getPackageName() + "/raw/notification");`
        Ringtone r = RingtoneManager.getRingtone(MyApplication.getInstance().getApplicationContext(), alarmSound);
        r.play();
    }
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

अधिसूचना प्राप्त होने पर इस फ़ंक्शन को कॉल करें।

यहाँ कच्चा res में फ़ोल्डर है और अधिसूचना कच्चे फ़ोल्डर में ध्वनि फ़ाइल है।


6

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);

5

1 "yourmp3file" .mp3 फ़ाइल को कच्चे फ़ोल्डर में रखें (यानी Res फ़ोल्डर के अंदर)

2 अपने कोड में डाल दिया ..

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

यह वही है जो मैंने अपने onClick (देखें v) के अंदर केवल "संदर्भ ()। GetPackageName ()" के रूप में अभ्यस्त काम के रूप में यह किसी भी संदर्भ में नहीं मिलता है।


4

Android OREO या बाद के संस्करण में सिस्टम के साथ चैनल रजिस्टर करने के बाद; एक ही चैनल (ऐप को अनइंस्टॉल करने से पहले) के बाद आप महत्व या अन्य सूचना व्यवहार को नहीं बदल सकतेयहाँ छवि विवरण दर्ज करें

private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
        // Register the channel with the system; you can't change the importance
        // or other notification behaviors after this
        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}

channel.setSound(Settings.System.DEFAULT_NOTIFICATION_URI,audioAttributes);

प्राथमिकता भी सबसे ज्यादा मायने रखती है उपयोग द्वारा उच्चता के लिए अधिसूचना प्राथमिकता निर्धारित करें

उपयोगकर्ता-दृश्यमान महत्व स्तर महत्व (Android 8.0 और उच्चतर)

1) तत्काल ध्वनि बनाता है और एक हेड-अप नोटिफिकेशन के रूप में प्रकट होता है -> महत्वपूर्ण_हाइट्स
2) हाई साउंड बनाता है -> महत्वपूर्ण_बता
3) मध्यम कोई ध्वनि नहीं -> महत्वपूर्ण ध्वनि
4) कम ध्वनि और स्थिति बार में प्रकट नहीं होता है -> महत्व_म

उसी क्रम में एक ही काम करता है प्राथमिकता (Android 7.1 और उससे कम)

1) PRIORITY_HIGH या PRIORITY_MAX

2) PRIORITY_DEFAULT

3) PRIORITY_LOW

4) PRIORITY_MIN


1
" आप उसी चैनल के बाद महत्व या अन्य सूचना व्यवहार को नहीं बदल सकते हैं "। काम करने के लिए ऐप को अनइंस्टॉल करने की आवश्यकता है, इस क्रिया ने परिणामस्वरूप डिवाइस से चैनल की जानकारी को हटा दिया।
एली डांटस


1
private void showNotification() {

    // intent triggered, you can add other intent for other actions
    Intent i = new Intent(this, MainActivity.class);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, i, 0);

    //Notification sound
    try {
        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
        r.play();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // this is it, we'll build the notification!
    // in the addAction method, if you don't want any icon, just set the first param to 0
    Notification mNotification = null;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {

        mNotification = new Notification.Builder(this)

           .setContentTitle("Wings-Traccar!")
           .setContentText("You are punched-in for more than 10hrs!")
           .setSmallIcon(R.drawable.wingslogo)
           .setContentIntent(pIntent)
           .setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 })
           .addAction(R.drawable.favicon, "Goto App", pIntent)
           .build();

    }

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    // If you want to hide the notification after it was selected, do the code below
    // myNotification.flags |= Notification.FLAG_AUTO_CANCEL;

    notificationManager.notify(0, mNotification);
}

आप जहां चाहें इस फ़ंक्शन को कॉल करें। यह मेरे लिए काम किया


0

नोटिफिकेशन.बिल्डर क्लास उदाहरण (बिल्डर) द्वारा जो आपको नीचे दिया गया है, अधिसूचना पर डिफ़ॉल्ट ध्वनि चला सकते हैं:

builder.setDefaults(Notification.DEFAULT_SOUND);

0
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);

    btn= findViewById(R.id.btn); 

   btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            notification();
        }
    });
  }   

निजी शून्य अधिसूचना () {

    NotificationCompat.Builder builder= new NotificationCompat.Builder(this);
    builder.setAutoCancel(true);
    builder.setContentTitle("Work Progress");
    builder.setContentText("Submit your today's work progress");
    builder.setSmallIcon(R.drawable.ic_email_black_24dp);
    Intent intent=new Intent(this, WorkStatus.class);
    PendingIntent pendingIntent= PendingIntent.getActivity(this, 1, intent, 
    PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(pendingIntent);
    builder.setDefaults(Notification.DEFAULT_VIBRATE);
    builder.setDefaults(Notification.DEFAULT_SOUND);

    NotificationManager notificationManager= (NotificationManager) 
    getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(1, builder.build());
}

यह ध्वनि और कंपन के साथ पूर्ण सूचना है


0

बिल्डर या अधिसूचना पर निर्भर नहीं करता है। कंपन के लिए कस्टम कोड का उपयोग करें।

public static void vibrate(Context context, int millis){
    try {
        Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            v.vibrate(VibrationEffect.createOneShot(millis, VibrationEffect.DEFAULT_AMPLITUDE));
        } else {
            v.vibrate(millis);
        }
    }catch(Exception ex){
    }
}

-1

आप निम्न कार्य कर सकते हैं:

MediaPlayer mp;
mp =MediaPlayer.create(Activity_Order_Visor_Atender.this, R.raw.ok);         
mp.start();

आप कच्चे के नाम के साथ अपने संसाधनों के बीच एक पैकेज बनाते हैं और वहां आप अपनी आवाज़ रखते हैं तब आप इसे कहते हैं।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.