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

Android में नेटवर्क टाइप (2G, 3G, 4G, 5G) निर्धारित करना

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>

नेटवर्क टाइप कॉन्स्टेंट्स रेफरेंस

जनरेशननेटवर्क टाइप कॉन्स्टेंट्सविवरण
2GGPRS, EDGE, CDMA, 1xRTT, IDENधीमा, पुराना
3GUMTS, EVDO_0/A/B, HSDPA, HSUPA, HSPA, HSPAP, EHRPDमध्यम गति
4GLTE, LTE_CAउच्च गति
5GNR (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 में प्रदर्शित होगा।

  1. Android में प्रोग्रामेटिकली WiFi चालू/बंद कैसे करें? Android में प्रोग्रामेटिकली WiFi चालू/बंद कैसे करें?

    Android ऐप से WiFi को प्रोग्रामेटिकली ऑन/ऑफ करना यह उदाहरण दिखाता है कि कैसे एक Switch विजेट का उपयोग करके WiFi को चालू और बंद किया जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनें। चरण 2: लेआउट में Switch और TextView जोड़ें res/layout/activity_main.xml: <?xml version

  1. एंड्रॉइड पर नेटवर्क सेटिंग्स कैसे रीसेट करें एंड्रॉइड पर नेटवर्क सेटिंग्स कैसे रीसेट करें

    एंड्रॉइड स्मार्टफोन पर धीमे इंटरनेट कनेक्शन की समस्या ठीक करना चाहते हैं? शायद आपको Wi-Fi या सेल्युलर डेटा का उपयोग करके इंटरनेट से कनेक्ट करने में समस्या आ रही है। जो भी समस्या हो, अपने स्मार्टफोन की नेटवर्क सेटिंग्स को रीसेट करना ऐसी सभी समस्याओं का इष्टतम समाधान हो सकता है। इस लेख में, हम चर्चा क

  1. पीसी पर NAT टाइप कैसे बदलें? पीसी पर NAT टाइप कैसे बदलें?

    नेटवर्क एड्रेस ट्रांसलेशन (NAT) किसी अन्य द्वारा IP एड्रेस को रीमैप करने की विधि है। जब नेटवर्क पैकेट नेटवर्क ट्रैफिक रूटिंग डिवाइस पर ट्रांसमिट होते हैं तो IP हेडर में जानकारी बदल जाती है। चूंकि NAT पैकेट स्तर पर IP एड्रेस जानकारी बदलता है, NAT कार्यान्वयन विभिन्न एड्रेसिंग मामलों में अपने व्यवहार