কম্পিউটার টিউটোরিয়াল

Android Emulator-এর IP Address পাওয়ার পদ্ধতি

এমুলেটরের IP Address বের করা

Android Emulator-র IP Address জানার প্রয়োজন হয় লোকাল সার্ভার (localhost) কনেক্ট করার সময়, নেটওয়ার্ক ডিবাগিং, বা বэкен্ড API টেস্ট করার সময়।

Emulator Network Architecture

  • 10.0.2.2 → Host Machine (আপনার কম্পিউটারের localhost)
  • 10.0.2.15 → Emulator নিজের IP (এমুলেটরের অভ্যন্তরীণ)
  • 10.0.2.3 → প্রথম DNS Server
  • 127.0.0.1 → Emulator নিজের লুপব্যাক (Host Machine নয়!)

ধাপ ১: প্রজেক্ট তৈরি

Android Studio-তে নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট (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"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="16sp"
        android:textStyle="bold" />
    <Button
        android:id="@+id/btnGetIPAddress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        android:text="Get IP Address" />
</RelativeLayout>

ধাপ ৩: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.format.Formatter;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button button;
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        textView = findViewById(R.id.textView);
        button = findViewById(R.id.btnGetIPAddress);
        
        button.setOnClickListener(v -> getIPAddress());
    }

    private void getIPAddress() {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        if (wifiManager != null) {
            int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
            String ip = Formatter.formatIpAddress(ipAddress);
            textView.setText("IP Address: " + ip);
        } else {
            textView.setText("WiFi Service Unavailable");
        }
    }
}

ধাপ ৪: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.emulatorip">
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application ...>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Emulator-এ localhost (Host Machine) এক্সেস

// ❌ ভুল - এমুলেটরের নিজের লুপব্যাক
String url = "https://127.0.0.1:3000/api";

// ✅ সঠিক - হোস্ট মেশিনের লোকালহোস্ট
String url = "https://10.0.2.2:3000/api";

// ✅ সঠিক - হোস্ট মেশিনের লোকাল IP (WiFi/LAN-এ থাকলে)
// আপনার কম্পিউটারের IP পেতে: ipconfig (Win) / ifconfig (Mac/Linux)
// String url = "https://192.168.1.100:3000/api";

Emulator Extended Controls-এ IP দেখুন

  1. Emulator Toolbar-এ Three Dots (⋮) → Extended Controls
  2. Settings → Proxy ট্যাব → দেখুন "10.0.2.15" (Emulator IP)
  3. Network ট্যাবে আরও ডিটেইল পাবেন

ADB কমান্ড দিয়ে IP বের করা

# Emulator শেলে ঢুকুন
adb shell

# Network Interface দেখুন
ip addr show wlan0
# বা
ifconfig wlan0

# আউটপুট: inet 10.0.2.15/24 ...

রিয়েল ডিভাইসে IP বের করা

// WiFi IP (কনেক্টেড থাকলে)
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipString = Formatter.formatIpAddress(ip);

// Mobile Data IP (API 29+)
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
Network network = cm.getActiveNetwork();
NetworkCapabilities caps = cm.getNetworkCapabilities(network);
if (caps != null && caps.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
    // Mobile data IP পাওয়া কঠিন, সাধারণত NAT পেছনে থাকে
}

সাধারণ সমস্যা

সমস্যাসমাধান
0.0.0.0 রিটার্ন করেWiFi কনেক্টেড নেই - Emulator Settings-এ WiFi অন করুন
Host-এ সার্ভার রান করলেও কনেক্ট হয় নাFirewall চেক করুন, 10.0.2.2 ব্যবহার করুন, সার্ভার 0.0.0.0:PORT-এ বাইন্ড করুন
Permission DeniedACCESS_WIFI_STATE পারমিশন Manifest-এ যোগ করুন
  1. অ্যান্ড্রয়েডে রিসোর্স আইডি (Resource ID) দিয়ে রিসোর্স নাম পাওয়া

  2. প্রোগ্রামেটিক্যালি বর্তমান অ্যান্ড্রয়েড SDK ভার্সন কীভাবে পাবেন?

  3. অ্যান্ড্রয়েডে দুটি ভৌগোলিক অবস্থানের মধ্যবর্তী দূরত্ব নির্ণয় করার পদ্ধতি

  4. Android ডিভাইসের প্রাইমারি ইমেইল ঠিকানা পাওয়ার পদ্ধতি