728x90
반응형
이 포스팅에서는 안드로이드 자바를 사용하여 특정 UUID로 블루투스 광고를 수행하는 방법을 알아보겠습니다. 블루투스 광고는 주변 기기에 신호를 브로드캐스트하여 다른 블루투스 장치가 해당 신호를 수신할 수 있도록 합니다. 예를 들어, 퍼스널 디지털 어시스턴트인 스마트 스피커가 자신의 존재를 알리기 위해 블루투스 광고를 사용하는 경우가 있습니다.
블루투스 광고란?
블루투스 광고는 소형 데이터를 다른 블루투스 장치에 전달하는 수단으로 사용됩니다. 이러한 광고는 광고 패킷을 통해 이루어지며, 광고 패킷 내에는 장치 이름, UUID, 전력 정보와 같은 유용한 정보가 포함됩니다. 이 정보들은 주변 블루투스 장치와의 연결을 쉽게 만들어 줍니다.
필요한 권한 추가
먼저, 블루투스 광고를 사용하기 위해 필요한 권한을 AndroidManifest.xml 파일에 추가해야 합니다.
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
블루투스 광고 설정하기
다음 단계는 BluetoothLeAdvertiser 를 사용하여 광고를 시작하는 것입니다. 아래의 코드는 간단한 블루투스 광고 예제를 보여줍니다.
1. 블루투스 어댑터 초기화:
BluetoothAdapter bluetoothAdapter = ((BluetoothManager) getSystemService(BLUETOOTH_SERVICE)).getAdapter();
2. 광고 데이터 설정:
ParcelUuid parcelUuid = new ParcelUuid(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
AdvertiseData advertiseData = new AdvertiseData.Builder()
.addServiceUuid(parcelUuid)
.setIncludeTxPowerLevel(true)
.build();
3. 광고 설정 및 시작:
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
.setConnectable(false)
.setDiscoverability(AdvertiseSettings.ADVERTISE_DISCOVERABILITY_GEN_DISCOVERABLE)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.build();
BluetoothLeAdvertiser advertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
advertiser.startAdvertising(settings, advertiseData, new AdvertiseCallback() {
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
// 광고 시작 성공
Log.i("Bluetooth", "Advertising started successfully.");
}
@Override
public void onStartFailure(int errorCode) {
// 광고 시작 실패
Log.e("Bluetooth", "Advertising failed with code: " + errorCode);
}
});
완전한 예제
위의 코드를 통합하여 하나의 액티비티로 만들어 보겠습니다.
public class MainActivity extends AppCompatActivity {
private BluetoothAdapter bluetoothAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
bluetoothAdapter = bluetoothManager.getAdapter();
startBluetoothAdvertising();
}
private void startBluetoothAdvertising() {
ParcelUuid parcelUuid = new ParcelUuid(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
AdvertiseData advertiseData = new AdvertiseData.Builder()
.addServiceUuid(parcelUuid)
.setIncludeTxPowerLevel(true)
.build();
AdvertiseSettings settings = new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER)
.setConnectable(false)
.setDiscoverability(AdvertiseSettings.ADVERTISE_DISCOVERABILITY_GEN_DISCOVERABLE)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
.build();
BluetoothLeAdvertiser advertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
advertiser.startAdvertising(settings, advertiseData, new AdvertiseCallback() {
@Override
public void onStartSuccess(AdvertiseSettings settingsInEffect) {
Log.i("Bluetooth", "Advertising started successfully.");
}
@Override
public void onStartFailure(int errorCode) {
Log.e("Bluetooth", "Advertising failed with code: " + errorCode);
}
});
}
}
결론
이처럼 간단한 설정으로 안드로이드 자바에서 특정 UUID로 블루투스를 광고할 수 있습니다. 블루투스 광고를 통해 다른 장치가 가까이 있을 때 신호를 보낼 수 있는 재미있는 기능을 활용해 보시기 바랍니다!
728x90
반응형
'IT > Android' 카테고리의 다른 글
안드로이드 앱 난독화 및 서명키 생성 방법 소개 (0) | 2025.03.14 |
---|---|
안드로이드 자바 저전력 블루투스(BLE)와 일반 블루투스 연결의 차이점 (0) | 2025.03.10 |
안드로이드 자바에서 ArrayList 활용 예제 (0) | 2025.02.22 |
JAVA 안드로이드 프로그래밍 초보자를 위한 딥링크 예제 (0) | 2025.02.22 |
Android NDK&JNI(C/C++) 사용하기 (JNI-Hello, World) (8) | 2021.03.26 |