1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| import org.altbeacon.beacon.* import kotlin.collections.ArrayList
class HogeActivity : AppCompatActivity(), BeaconConsumer { private val TAG: String = "HogeActivity" private lateinit var mBeaconManager: BeaconManager private val IBEACON_FORMAT: String = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"
private val mRegion = Region("unique-id-001", null, null, null)
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_Hogee) mBeaconManager = BeaconManager.getInstanceForApplication(this) mBeaconManager.beaconParsers.add(BeaconParser().setBeaconLayout(IBEACON_FORMAT)) }
override fun onPause() { super.onPause() mBeaconManager.unbind(this) Log.d(TAG, "ビーコンサービスを解除した") }
override fun onResume() { super.onResume() mBeaconManager.bind(this) Log.d(TAG, "ビーコンサービスを起動した") }
override fun onBeaconServiceConnect() {
mBeaconManager.removeAllMonitorNotifiers() mBeaconManager.removeAllRangeNotifiers() mBeaconManager.rangedRegions.forEach {region -> mBeaconManager.stopRangingBeaconsInRegion(region) }
mBeaconManager.addMonitorNotifier(object : MonitorNotifier { override fun didEnterRegion(region: Region) { Log.d(TAG, "ビーコンが近くにいる!ビーコンが発信するデータの受信を開始する") }
override fun didExitRegion(region: Region) { Log.d(TAG, "ビーコンが近くにいなくなった。。ビーコンが発信するデータの受信を停止する") }
override fun didDetermineStateForRegion(state: Int, region: Region) { Log.d(TAG, "ビーコンの侵入/退出ステータスが変化: $state") try { if (state == 1) { mBeaconManager.startRangingBeaconsInRegion(region) } else { mBeaconManager.stopRangingBeaconsInRegion(region) } } catch (e: RemoteException) { Log.d(TAG, "didDetermineStateForRegion e = " + e.message) } } })
try { mBeaconManager.startMonitoringBeaconsInRegion(mRegion) Log.d(TAG, "ビーコンが近くにいるかどうかの監視を開始した。") } catch (e: RemoteException) { Log.e(TAG, "Exception", e) e.printStackTrace() }
mBeaconManager.addRangeNotifier(RangeNotifier { beacons, region -> Log.d(TAG, "ビーコンデータ:${beacons}") for (beacon in beacons) { Log.d(TAG, "UUID:" + beacon.id1 + ", major:" + beacon.id2 + ", minor:" + beacon.id3 + ", Distance:" + beacon.distance + ",RSSI" + beacon.rssi) } }) } }
|