이 튜토리얼에서는 안드로이드 앱에서 현재 연결된 Wi-Fi 네트워크의 BSSID를 가져오는 방법을 단계별로 알아봅니다.
BSSID(Basic Service Set Identifier)는 무선 AP(공유기)의 MAC 주소를 의미합니다. SSID가 네트워크 이름이라면, BSSID는 실제 접속된 공유기를 고유하게 식별하는 값입니다. 위치 기반 서비스나 네트워크 상태 분석 등 다양한 용도로 활용됩니다.
1단계: 새 프로젝트 생성
Android Studio에서 File → New Project를 선택하고, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.
2단계: 레이아웃 파일 작성 (activity_main.xml)
res/layout/activity_main.xml에 아래 코드를 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:gravity = "center"
android:layout_height = "match_parent"
tools:context = ".MainActivity">
<TextView
android:id = "@+id/text"
android:textSize = "30sp"
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
</LinearLayout>위 코드에서는 Wi-Fi ID(BSSID)를 화면에 표시하기 위한 TextView 하나를 배치했습니다.
3단계: 메인 액티비티 작성 (MainActivity.java)
src/MainActivity.java에 아래 코드를 추가합니다.
package com.example.myapplication;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
textView.setText(""+wifiInfo.getBSSID());
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onResume() {
super.onResume();
}
}핵심 로직은 getSystemService(WIFI_SERVICE)로 WifiManager 인스턴스를 얻은 뒤, getConnectionInfo()로 현재 Wi-Fi 연결 정보를 조회하고, 마지막으로 getBSSID()를 호출해 BSSID 값을 가져오는 부분입니다.
4단계: 권한 설정 (AndroidManifest.xml)
androidManifest.xml에 아래와 같이 Wi-Fi 상태 조회 권한을 추가합니다.
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
package = "com.example.myapplication">
<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" />
<action android:name = "android.net.conn.CONNECTIVITY_CHANGE" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>ACCESS_WIFI_STATE 권한은 일반(normal) 권한이므로 별도의 런타임 요청 없이 매니페스트에 선언만 하면 됩니다.
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 스마트폰이 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 실행 대상으로 자신의 모바일 기기를 선택하세요.
앱이 실행되면 현재 연결된 Wi-Fi 네트워크의 BSSID 값이 화면에 표시됩니다.

참고 사항
- Wi-Fi에 연결되어 있지 않으면
null이 반환될 수 있으므로, 실제 앱에서는 null 체크를 추가하는 것이 좋습니다. - Android 8.0(API 26) 이상에서는 위치 권한 관련 제약이 강화되었으므로, 기기에 따라 위치 서비스가 켜져 있어야 정확한 값을 얻을 수 있습니다.