Estimote Beacon 스캔
11 Jan 2017 | Android Beacon안드로이드에서 Estimote Beacon을 스캔하는 간단한 예제 코드입니다. 더 자세한 정보는 여기를 참고하시면 됩니다.
SDK 다운로드
그리고 Estimote SDK는 여기(GitHub)에서 다운 받을 수 있습니다.
Dependency 추가
Android Studio 기준으로, 일단 build.gradle에 Estimote Beacon SDK에 대한 dependency를 추가합니다.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
// for Estimote SDK
compile 'com.estimote:sdk:0.11.1@aar'
}
예제 코드
그런 다음, 다음과 같은 코드로 주위에 있는 Estimote Beacon들을 간단하게 스캔할 수 있습니다.
package snowdeer.sample.estimote;
import android.graphics.Bitmap;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.estimote.sdk.BeaconManager;
import com.estimote.sdk.EstimoteSDK;
import com.estimote.sdk.Nearable;
import com.estimote.sdk.SystemRequirementsChecker;
import com.estimote.sdk.connection.scanner.ConfigurableDevicesScanner;
import com.estimote.sdk.connection.scanner.DeviceType;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "snowdeer";
private TextView mLogView;
private StringBuilder mLogBuilder = new StringBuilder();
private Handler mHandler = new Handler();
private BeaconManager mBeaconManager;
private ConfigurableDevicesScanner mDeviceScanner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_start_scan).setOnClickListener(mOnClickListener);
findViewById(R.id.btn_stop_scan).setOnClickListener(mOnClickListener);
findViewById(R.id.btn_clear_log).setOnClickListener(mOnClickListener);
mLogView = (TextView) findViewById(R.id.log);
mLogBuilder.setLength(0);
EstimoteSDK.initialize(getApplicationContext(),
"estimotebeaconsample-ivb", "45f6fc31fd613624b0f24df41b121db6");
mBeaconManager = new BeaconManager(getApplicationContext());
mDeviceScanner = new ConfigurableDevicesScanner(getApplicationContext());
}
@Override
protected void onResume() {
super.onResume();
SystemRequirementsChecker.checkWithDefaultDialogs(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
private void log(String message) {
mLogBuilder.append("\n");
mLogBuilder.append(message);
mHandler.post(new Runnable() {
@Override
public void run() {
if(mLogView != null) {
mLogView.setText(mLogBuilder.toString());
}
}
});
}
private View.OnClickListener mOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.btn_start_scan:
startToScan();
break;
case R.id.btn_stop_scan:
stopToScan();
break;
case R.id.btn_clear_log:
clearLog();
break;
}
}
};
private void startToScan() {
log("start to scan beacons()");
mDeviceScanner.setOwnDevicesFiltering(false);
ArrayList<DeviceType> deviceTypeList = new ArrayList<DeviceType>();
deviceTypeList.add(DeviceType.LOCATION_BEACON);
deviceTypeList.add(DeviceType.NEARABLE);
deviceTypeList.add(DeviceType.PROXIMITY_BEACON);
mDeviceScanner.setDeviceTypes(deviceTypeList);
mDeviceScanner.scanForDevices(
new ConfigurableDevicesScanner.ScannerCallback() {
@Override
public void onDevicesFound(
List<ConfigurableDevicesScanner.ScanResultItem> devices) {
log("onDevicesFound : " + devices.size());
for(int i = 0; i < devices.size(); i++) {
ConfigurableDevicesScanner.ScanResultItem item = devices.get(i);
log((i + 1) + ". Device ID : " + item.device.deviceId);
log(" - Device Type : " + item.device.type);
log(" - RSSI : " + item.rssi);
}
log("");
}
});
}
private void stopToScan() {
log("stop to scan beacons()");
mDeviceScanner.stopScanning();
}
private void clearLog() {
mLogBuilder.setLength(0);
mLogView.setText("");
}
}