TelephonyManager का उपयोग करके मोबाइल नेटवर्क टाइप पहचानना
यह उदाहरण दर्शाता है कि TelephonyManager का उपयोग करके वर्तमान मोबाइल नेटवर्क टाइप (2G, 3G, 4G/LTE, 5G) कैसे निर्धारित किया जाता है।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें और प्रोजेक्ट बनाएं।
चरण 2: लेआउट में TextView
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:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="नेटवर्क टाइप डिटेक्ट हो रहा है: 2G/3G/4G/5G"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
चरण 3: MainActivity.java - नेटवर्क क्लास डिटेक्शन
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Objects;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
String networkClass = getNetworkClass(getApplicationContext());
textView.setText("नेटवर्क टाइप: " + networkClass);
}
public String getNetworkClass(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int networkType = Objects.requireNonNull(mTelephonyManager).getNetworkType();
switch (networkType) {
// 2G नेटवर्क टाइप्स
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return "2G";
// 3G नेटवर्क टाइप्स
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return "3G";
// 4G नेटवर्क टाइप्स
case TelephonyManager.NETWORK_TYPE_LTE:
case TelephonyManager.NETWORK_TYPE_LTE_CA:
return "4G / LTE";
// 5G नेटवर्क टाइप्स (API 29+)
case TelephonyManager.NETWORK_TYPE_NR:
return "5G (NR)";
// अन्य/अज्ञात
case TelephonyManager.NETWORK_TYPE_UNKNOWN:
default:
return "अज्ञात / WiFi";
}
}
}
चरण 4: AndroidManifest.xml - अनुमति
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<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>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
नेटवर्क टाइप कॉन्स्टेंट्स रेफरेंस
| जनरेशन | नेटवर्क टाइप कॉन्स्टेंट्स | विवरण |
|---|---|---|
| 2G | GPRS, EDGE, CDMA, 1xRTT, IDEN | धीमा, पुराना |
| 3G | UMTS, EVDO_0/A/B, HSDPA, HSUPA, HSPA, HSPAP, EHRPD | मध्यम गति |
| 4G | LTE, LTE_CA | उच्च गति |
| 5G | NR (New Radio) | अत्यधिक उच्च गति (API 29+) |
महत्वपूर्ण नोट्स
READ_PHONE_STATEअनुमति Android 12+ में आवश्यक हो सकती है- यह केवल मोबाइल डेटा नेटवर्क दिखाता है, WiFi नहीं
- डुअल SIM डिवाइस में
getNetworkType()प्राथमिक स्लॉट दिखाता है - Android 11+ में
TelephonyManager.createForSubscriptionId()का उपयोग करें - नेटवर्क टाइप रियल-टाइम बदल सकता है - लिस्टनर के लिए
PhoneStateListenerउपयोग करें
रियल-टाइम मॉनिटरिंग के लिए PhoneStateListener
PhoneStateListener listener = new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state, int networkType) {
super.onDataConnectionStateChanged(state, networkType);
// नेटवर्क टाइप चेंज हैंडल करें
}
};
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(listener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
ऐप चलाएं
डिवाइस कनेक्ट करें (सिम कार्ड के साथ), Run पर क्लिक करें। वर्तमान नेटवर्क टाइप (2G/3G/4G/5G) TextView में प्रदर्शित होगा।