বিজ্ঞপ্তিতে ভাইব্রেট এবং সাউন্ড ডিফল্ট


94

আমার বিজ্ঞপ্তি এলে আমি একটি ডিফল্ট ভাইব্রেট এবং সাউন্ড সতর্কতা নেওয়ার চেষ্টা করছি, তবে এখনও ভাগ্য নেই। আমি ডিফল্টগুলি সেট করার পদ্ধতিতে এটি করার কিছু ধারণা করি তবে আমি কীভাবে এটি ঠিক করব সে সম্পর্কে আমি অনিশ্চিত। কোন চিন্তা?

public void connectedNotify() {
    Integer mId = 0;
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_notify)
            .setContentTitle("Device Connected")
            .setContentText("Click to monitor");

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

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent resultPendingIntent =     
          PendingIntent.getActivity(getApplicationContext(), 
          0, 
          resultIntent,  
          PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(resultPendingIntent);
    mBuilder.setOngoing(true);
    Notification note = mBuilder.build();
    note.defaults |= Notification.DEFAULT_VIBRATE;
    note.defaults |= Notification.DEFAULT_SOUND;
    NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(mId, note);

}

4
সমস্ত উত্তরগুলি আপনার কাছে ইতিমধ্যে থাকা কোডের কিছু বৈচিত্রের পুনরাবৃত্তি করেছে এবং তাদের মধ্যে কেউই আমার মতে প্রশ্নের উত্তর দেয় না। আপনার কোডটি দুর্দান্ত দেখায়, এএএএফসিটি। সম্ভবত, আপনি কেবল android.permission.VIBRATEঅ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল অনুপস্থিত ।
ওলাফ ডিয়েটশে

যার কাছে এটি এই থ্রেডে সমাধানগুলি প্রয়োগ করতে পারে এবং এখনও বিজ্ঞপ্তিতে কোনও কম্পন নেই, আপনাকে প্রথমে আপনার বিজ্ঞপ্তি চ্যানেলের কম্পন সক্ষম করতে হবে। এটি একবার দেখুন: stackoverflow.com/a/47646166/8551764
মোস্তফা আরিয়ান নেজাদ

উত্তর:


205

কিছু ডামি কোড আপনাকে সাহায্য করতে পারে।

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

AndroidManifest.xmlফাইলটিতে কম্পনের জন্য নীচে অনুমতি যুক্ত করুন

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

115
+1 vibrateবৈশিষ্ট্যের <uses-permission android:name="android.permission.VIBRATE" />অনুমতি প্রয়োজন
আশাকিরভ

4
কিছু ক্ষেত্রে আপনার রঙের পরিবর্তে 0xffffffff এর মত 0xffffffff এর মতো হেক্স রঙের আরগব ফর্ম্যাটটি ব্যবহার করা উচিত, কারণ একটি এআরজিবি প্যারামের জন্য ব্যবহারকারীর ডিভাইস রঙ (আরজিবি) ব্যবহারের খুব কম সুযোগ রয়েছে এবং আপনি ভুল রঙ পাবেন। এটা আমার সাথে ঘটেছিল
Beto Caldas

55
কম্পনটি এখন 1000 এমএসের বিলম্ব করেছে। আপনি যদি প্রথমটিকে 0 এ সেট করেন তবে এটি তাত্ক্ষণিকভাবে বন্ধ হয়ে যাবে। এটি {বিলম্ব, কম্পন, ঘুম, কম্পন, ঘুম sleep নিদর্শন।
টম

11
আমার <uses-permission android:name="android.permission.VIBRATE" />কাজে যোগ করার দরকার নেই ।
ইকবাল

4
যে কেউ কীভাবে 26 এপি 26 এ সেটসাউন্ড ব্যবহার করবেন?
রদ্রিগো মঙ্গুইনহো

61

টিট্রেকারের উত্তরের একটি বর্ধন,

ডিফল্ট নোটিফিকেশন শব্দটি পেতে আপনি নিম্নলিখিত হিসাবে করতে পারেন

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_notify)
            .setContentTitle("Device Connected")
            .setContentText("Click to monitor");

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

এটি আপনাকে ডিফল্ট বিজ্ঞপ্তি দেবে।


36

বিজ্ঞপ্তি কম্পন

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

শব্দ

mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);

আরও শব্দ বিকল্পের জন্য


4
<uses-permission android:name="android.permission.VIBRATE" />ভাইব্রেডটির জন্য , আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল
হারুন

এই কম্পনটি আর কতক্ষণ চলবে? বা এটি কেবল একবার কম্পন হবে?
Zapnologica

13

এটির কাজটি আমার পক্ষে ভাল, আপনি এটি চেষ্টা করতে পারেন।

 protected void displayNotification() {

        Log.i("Start", "notification");

      // Invoking the default notification service //
        NotificationCompat.Builder  mBuilder =
                new NotificationCompat.Builder(this);
        mBuilder.setAutoCancel(true);

        mBuilder.setContentTitle("New Message");
        mBuilder.setContentText("You have "+unMber_unRead_sms +" new message.");
        mBuilder.setTicker("New message from PayMe..");
        mBuilder.setSmallIcon(R.drawable.icon2);

      // Increase notification number every time a new notification arrives //
        mBuilder.setNumber(unMber_unRead_sms);

      // Creates an explicit intent for an Activity in your app //

        Intent resultIntent = new Intent(this, FreesmsLog.class);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(FreesmsLog.class);

      // Adds the Intent that starts the Activity to the top of the stack //
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(
                        0,
                        PendingIntent.FLAG_UPDATE_CURRENT
                );
        mBuilder.setContentIntent(resultPendingIntent);

      //  mBuilder.setOngoing(true);
        Notification note = mBuilder.build();
        note.defaults |= Notification.DEFAULT_VIBRATE;
        note.defaults |= Notification.DEFAULT_SOUND;

        mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      // notificationID allows you to update the notification later on. //
        mNotificationManager.notify(notificationID, mBuilder.build());

    }

10

সিস্টেম থেকে ডিফল্ট ভাইব্রেট এবং শব্দ ব্যবহার করে বিজ্ঞপ্তি কল করার এটি একটি সহজ উপায়।

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

আপনি যদি এটি ব্যবহার করতে যাচ্ছেন তবে স্পন্দিত অনুমতি যুক্ত করুন:

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

শুভকামনা, '।


কেউ আমাকে বলতে পারবেন ফোন কল করার সময় কেন কম্পন কাজ করছে না? অথবা আমরা ফোনে কল করতে বাধ্য হয়ে ভাইব্রেট করার জন্য বিজ্ঞপ্তিটি দিতে পারি

এটি আমাকে নোটিফিকেশনবিল্ডার.সেটফেল্টস (নোটিফিকেশন.ডেফল্টস) সহায়তা করেছে;
সেভেন

@ user526206, আমি জানি না। আমি কখনই এটি পরীক্ষা করিনি। আপনি নতুন প্রশ্ন খুলতে পারেন যেহেতু বিজ্ঞপ্তি আচরণের সাথে এর কিছুই নেই।
মাহের আবুত্রা

7

আমি ফলোং কোডটি ব্যবহার করছি এবং এটি আমার জন্য কাজ করছে।

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.");
}


1

এসডিকে সংস্করণ> = 26 সমর্থন করার জন্য আপনাকে নোটিফিকেশন চ্যানেলটি তৈরি করতে হবে এবং সেখানে একটি কম্পনের প্যাটার্ন সেট করা উচিত sound কোটলিন কোডের নমুনা রয়েছে:

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

এবং এটি নির্মাতা:

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

নিশ্চিত হন যে এখানে আপনার AudioAttributesআরও পড়ার জন্য সঠিকভাবে নির্বাচিত হয়েছে


1

কোটলিনের জন্য আপনি এটি ব্যবহার করে দেখতে পারেন।

var builder = NotificationCompat.Builder(this,CHANNEL_ID)
     .setVibrate(longArrayOf(1000, 1000, 1000, 1000, 1000))
     .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.