एंड्रॉइड में एयरप्लेन मोड परिवर्तन डिटेक्ट करें (BroadcastReceiver)
यह ट्यूटोरियल दिखाता है कि BroadcastReceiver के साथ Intent.ACTION_AIRPLANE_MODE_CHANGED का उपयोग करके एयरप्लेन मोड टॉगल होने पर रियल-टाइम नोटिफिकेशन कैसे प्राप्त करें।
चरण 1: प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में नया प्रोजेक्ट बनाएं।
चरण 2: लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:gravity="center"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:id="@+id/statusText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textStyle="bold"
android:padding="24dp"
android:background="#E8EAF6"
android:text="एयरप्लेन मोड परिवर्तन की प्रतीक्षा..."/>
</LinearLayout>
चरण 3: एक्टिविटी कोड (src/MainActivity.java)
package com.example.airplanemodechanged;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView statusText;
private AirplaneModeChangeReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
statusText = findViewById(R.id.statusText);
receiver = new AirplaneModeChangeReceiver();
}
@Override
protected void onResume() {
super.onResume();
// एयरप्लेन मोड परिवर्तन एक्शन के लिए रजिस्टर
IntentFilter filter = new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED);
registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
super.onPause();
// मेमोरी लीक रोकने के लिए अनरजिस्टर करें
unregisterReceiver(receiver);
}
// ब्रॉडकास्ट रिसीवर क्लास
private class AirplaneModeChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())) {
// नई स्थिति प्राप्त करें (API 17+)
boolean isAirplaneModeOn = intent.getBooleanExtra("state", false);
String message = "✈️ एयरप्लेन मोड " + (isAirplaneModeOn ? "चालू हुआ" : "बंद हुआ");
statusText.setText(message);
statusText.setTextColor(isAirplaneModeOn ? 0xFFF44336 : 0xFF4CAF50);
statusText.setBackgroundColor(isAirplaneModeOn ? 0xFFFFEBEE : 0xFFE8F5E9);
}
}
}
}
मैनिफेस्ट में रजिस्टर करना (Android 7.0 और नीचे के लिए)
<receiver android:name=".AirplaneModeReceiver" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.AIRPLANE_MODE" />
</intent-filter>
</receiver>
<!-- अलग क्लास फाइल -->
public class AirplaneModeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// पृष्ठभूमि में भी काम करता है
}
}
डायनामिक vs स्टेटिक रजिस्ट्रेशन
| विशेषता | डायनामिक (कोड में) | स्टेटिक (मैनिफेस्ट) |
|---|---|---|
| लाइफसाइकिल | एक्टिविटी/सर्विस लाइफसाइकिल से बंधा | ऐप इंस्टॉल होने पर हमेशा सक्रिय |
| Android 8+ (API 26) | ✅ समर्थित | ❌ अधिकांश इम्प्लिसिट ब्रॉडकास्ट्स के लिए प्रतिबंधित |
| बूट पर प्राप्त | नहीं (ऐप चलना चाहिए) | हां (यदि अनुमति हो) |
| एयरप्लेन मोड के लिए | ✅ अनुशंसित | ⚠️ Android 8+ पर काम नहीं करेगा |
वर्तमान स्थिति भी जांचें (ऐप शुरू होने पर)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// तत्काल वर्तमान स्थिति जांचें
checkCurrentAirplaneMode();
// फिर रिसीवर सेटअप करें...
}
private void checkCurrentAirplaneMode() {
boolean isOn = Settings.Global.getInt(
getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0) != 0;
updateUI(isOn);
}
उपयोग केस
- नेटवर्क ऐप्स: ऑफलाइन मोड UI दिखाएं, सिंक रोकें
- मैसेजिंग: "आप ऑफलाइन हैं" बैनर दिखाएं
- डाउनलोड मैनेजर: डाउनलोड पॉज/रिज्यूम करें
- लोकेशन ऐप्स: GPS बंद होने पर चेतावनी दें
- बैटरी सेवर: एयरप्लेन मोड पर अतिरिक्त ऑप्टिमाइजेशन
चरण 4: टेस्ट करें
- ऐप चलाएं
- क्विक सेटिंग्स पैनल खोलें (स्वाइप डाउन)
- एयरप्लेन मोड टॉगल करें
- ऐप पर वापस आएं - तुरंत स्थिति परिवर्तन दिखेगा
- लॉगकैट में ब्रॉडकास्ट प्राप्ति देखें
