Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

हर 5 मिनट में एंड्रॉइड नोटिफिकेशन कैसे दिखाएं?

पीरियोडिक नोटिफिकेशन: हर 5 मिनट में अलर्ट

कभी-कभी ऐप को बैकग्राउंड में चलते हुए नियमित अंतराल पर नोटिफिकेशन भेजने की जरूरत होती है। इसके लिए हम Service और Timer का उपयोग करते हैं।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में नया प्रोजेक्ट बनाएं।

चरण 2: Main लेआउट

res/layout/activity_main.xml — एक बटन जो ऐप बंद करता है (ताकि सर्विस बैकग्राउंड में चले):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:onClick="closeApp"
        android:text="Close App for Notification" />
</RelativeLayout>

चरण 3: MainActivity

ऐप बंद होने पर सर्विस शुरू करें:

package app.tutorialspoint.com.notifyme;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStop() {
        super.onStop();
        // ऐप बैकग्राउंड में जाते ही सर्विस शुरू करें
        startService(new Intent(this, NotificationService.class));
    }

    public void closeApp(View view) {
        finish();
    }
}

चरण 4: NotificationService — टाइमर के साथ

यह सर्विस हर 5 सेकंड (डेमो के लिए) में नोटिफिकेशन भेजती है। प्रोडक्शन में Your_X_SECS = 300 (5 मिनट) सेट करें:

package app.tutorialspoint.com.notifyme;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import java.util.Timer;
import java.util.TimerTask;

public class NotificationService extends Service {
    public static final String NOTIFICATION_CHANNEL_ID = "10001";
    private final static String default_notification_channel_id = "default";

    Timer timer;
    TimerTask timerTask;
    String TAG = "Timers";
    int Your_X_SECS = 5; // टेस्ट के लिए 5 सेकंड, प्रोडक्शन में 300 (5 मिनट)

    @Override
    public IBinder onBind(Intent arg0) { return null; }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e(TAG, "onStartCommand");
        super.onStartCommand(intent, flags, startId);
        startTimer();
        return START_STICKY;
    }

    @Override
    public void onCreate() {
        Log.e(TAG, "onCreate");
    }

    @Override
    public void onDestroy() {
        Log.e(TAG, "onDestroy");
        stopTimerTask();
        super.onDestroy();
    }

    final Handler handler = new Handler();

    public void startTimer() {
        timer = new Timer();
        initializeTimerTask();
        // 500000 ms देरी के बाद शुरू, फिर हर Your_X_SECS * 1000 ms
        timer.schedule(timerTask, 500000, Your_X_SECS * 1000);
    }

    public void stopTimerTask() {
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
    }

    public void initializeTimerTask() {
        timerTask = new TimerTask() {
            public void run() {
                handler.post(new Runnable() {
                    public void run() {
                        createNotification();
                    }
                });
            }
        };
    }

    private void createNotification() {
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), default_notification_channel_id);

        mBuilder.setContentTitle("My Notification");
        mBuilder.setContentText("Notification Listener Service Example");
        mBuilder.setTicker("Notification Listener Service Example");
        mBuilder.setSmallIcon(R.drawable.ic_launcher_foreground);
        mBuilder.setAutoCancel(true);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            int importance = NotificationManager.IMPORTANCE_HIGH;
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
            mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
            assert mNotificationManager != null;
            mNotificationManager.createNotificationChannel(notificationChannel);
        }

        assert mNotificationManager != null;
        mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
    }
}

चरण 5: मैनिफेस्ट में सर्विस डिक्लेयर करें

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.tutorialspoint.com.notifyme">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service
            android:name=".NotificationService"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="app.tutorialspoint.com.notifyme.NotificationService" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </service>
    </application>
</manifest>

महत्वपूर्ण नोट्स

  • Android 8+ (Oreo) में बैकग्राउंड सर्विस पर प्रतिबंध हैं। START_STICKY के बावजूद सिस्टम सर्विस को मार सकता है।
  • प्रोडक्शन के लिए WorkManager या AlarmManager + BroadcastReceiver बेहतर विकल्प हैं।
  • बैटरी ऑप्टिमाइज़ेशन से ऐप को छूट दें (सेटिंग्स → बैटरी → ऐप ऑप्टिमाइज़ेशन)।

ऐप चलाएं, "Close App" दबाएं, और कुछ सेकंड इंतजार करें — नोटिफिकेशन आते रहेंगे।

  1. एंड्रॉइड नोटिफिकेशन को InboxStyle से कैसे स्टाइल करें? एंड्रॉइड नोटिफिकेशन को InboxStyle से कैसे स्टाइल करें?

    InboxStyle से नोटिफिकेशन स्टाइल करना यह आर्टिकल पिछले वाले (ID 1005061569) के समान है — दोनों NotificationCompat.InboxStyle समझाते हैं। यहां वही कोड थोड़े अलग फॉर्मेट में दिया गया है। चरण 1-2: प्रोजेक्ट और लेआउट पिछले आर्टिकल जैसे ही — एक बटन वाला सिंपल लेआउट। चरण 3: MainActivity कोड = android.os.

  1. Android में Notification.deleteIntent का उपयोग कैसे करें? Android में Notification.deleteIntent का उपयोग कैसे करें?

    Android में Notification.deleteIntent का उपयोग यह उदाहरण दर्शाता है कि Android में Notification.deleteIntent का उपयोग कैसे किया जाता है। चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - res/layout/activity_main.x

  1. Android में रिमाइंडर नोटिफिकेशन कैसे बनाएं? Android में रिमाइंडर नोटिफिकेशन कैसे बनाएं?

    Android में रिमाइंडर नोटिफिकेशन बनाना यह उदाहरण दर्शाता है कि Android में रिमाइंडर नोटिफिकेशन कैसे बनाया जाता है। चरण 1 - नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - res/layout/activity_main.xml में कोड जोड़ें <?