Android
 Computer >> コンピューター >  >> プログラミング >> Android

KotlinでAndroidエミュレータのIPアドレスを取得する方法【初心者向け】

はじめに

Kotlinを使えば、Wi-Fi接続情報から簡単にAndroidエミュレータや実機デバイスのIPアドレスを取得できます。この記事では、ボタンをタップすると現在のIPアドレスが画面に表示されるシンプルなサンプルアプリを作成しながら、具体的な手順をわかりやすく解説します。

仕組みとしては、WifiManagerから接続中のネットワーク情報を取得し、Formatter.formatIpAddress()メソッドで整数値として保持されているIPアドレスを「192.168.x.x」のような読みやすい文字列に変換する流れになります。

ステップ1:新規プロジェクトの作成

まずはAndroid Studioで新しいプロジェクトを作成しましょう。「File」→「New Project」を選択し、必要事項を入力してプロジェクトを生成してください。

ステップ2:レイアウトファイル(res/layout/activity_main.xml)の準備

次に、res/layout/activity_main.xmlに以下のコードを追加します。取得したIPアドレスを表示するためのTextViewと、処理を実行するButtonを配置しています。

<?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:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:background="#008080"
        android:padding="5dp"
        android:text="TutorialsPoint"
        android:textColor="#fff"
        android:textSize="24sp"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="@android:color/background_dark"
        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>

ステップ3:MainActivity.ktの実装

続いて、src/MainActivity.ktに以下のコードを記述します。ボタンがクリックされると、getSystemService(WIFI_SERVICE)でWifiManagerを取得し、そこからIPアドレスを取り出してTextViewに表示します。

import android.net.wifi.WifiManager
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import android.text.format.Formatter
class MainActivity : AppCompatActivity() {
    lateinit var button: Button
    lateinit var textView: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        textView = findViewById(R.id.textView)
        button = findViewById(R.id.btnGetIPAddress)
        button.setOnClickListener {
            val wifiManager: WifiManager = applicationContext.getSystemService(WIFI_SERVICE) as WifiManager
            val ip: String = Formatter.formatIpAddress(wifiManager.connectionInfo.ipAddress)
            textView.text = String.format("IP Address: %s", ip)
        }
    }
}

補足: Formatter.formatIpAddress()はAPI 31以降で非推奨(deprecated)となっています。より新しい環境では、NetworkInterfaceConnectivityManagerを利用した取得方法も検討するとよいでしょう。

ステップ4:パーミッションの設定(androidManifest.xml)

Wi-Fiの状態にアクセスするため、androidManifest.xmlにACCESS_WIFI_STATEパーミッションを追加します。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="com.example.q11">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <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>
</manifest>

アプリの実行と動作確認

それではアプリを実行してみましょう。Android Studioのツールバーにある実行アイコンKotlinでAndroidエミュレータのIPアドレスを取得する方法【初心者向け】をクリックし、エミュレータまたはパソコンに接続した実機デバイスを選択してください。アプリが起動したら「Get IP Address」ボタンをタップします。画面中央に現在のIPアドレスが表示されれば成功です。

なお、Androidエミュレータの場合、通常は「10.0.2.15」などの内部ネットワーク用IPアドレスが割り当てられます。これはエミュレータ特有の仮想ネットワークによるものであるため、実機とは異なる点に注意してください。

KotlinでAndroidエミュレータのIPアドレスを取得する方法【初心者向け】

  1. 【Android開発】リソースIDからリソース名を取得する方法を解説

    AndroidでリソースIDを使用してリソース名を取得する方法この記事では、Androidアプリ開発において、リソースID(Resource ID)から対応するリソース名(Resource Name)を取得する方法を、実際のコード例とともに段階的に解説します。リソース名の取得には、Resourcesクラスが提供するgetResourceName()メソッドを使用します。このメソッドにリソースIDを渡すことで、「パッケージ名:リソースタイプ/リソース名」の形式で文字列として取得できます。動的にビューを生成した場合や、デバッグ時にどのリソースが使われているか確認したい場合などに役立つテクニックです

  2. 【Android】エミュレータのIPアドレスを取得して表示する方法を解説

    はじめにこの記事では、Androidアプリから端末(エミュレータ/実機)のIPアドレスを取得し、画面に表示する方法を、実際のサンプルコードとともにステップ形式で解説します。Wi-Fi接続情報を利用したシンプルな実装例なので、Android開発初心者の方にもわかりやすい内容となっています。手順1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)の編集res/layout/acti