だいぶ書き忘れてたけど3週間ぐらい前に作った気がする

https://github.com/shokai/iBeacon-AndroidScala


前:AndroidでiBeaconを読む(Scalaで)


onRegionでRSSIの範囲を指定してevent登録できる
-70から-50、端末にもよるけどだいたい15メートル以上20メートルぐらいに入った時にcallbackされる。

// UUID, major, minor, RSSI range, callback
iBeacon.onRegion("805D6740-F575-492A-8668-45E553EB9DF2", "0001", "0001", Range(-70,-50), (beacon:Beacon) => {
Log.v("iBeacon", s"region(-70~-50) UUID=${beacon.uuid} RSSI=${beacon.rssi}")
})

UUID, major, minorはそれぞれnullを与えると何にでも反応するようになる

onRegionのラッパーでonFar, onNear, onImmediateというのがあって、それぞれ電波とどかなくなるギリギリ30メートルぐらい、割と近い数メートル、すごく近い数十センチでcallbackする。
iBeacon.onFar("805D6740-F575-492A-8668-45E553EB9DF2", "0001", "0001", (beacon:Beacon) => {
Log.v("iBeacon", s"far: ${beacon.uuid}")
})

iBeacon.onNear("805D6740-F575-492A-8668-45E553EB9DF2", "0001", "0001", (beacon:Beacon) => {
Log.v("iBeacon", s"near: ${beacon.uuid}")
})

iBeacon.onImmediate("805D6740-F575-492A-8668-45E553EB9DF2", "0001", "0001", (beacon:Beacon) => {
Log.v("iBeacon", s"immediate: ${beacon.uuid}")
})

これらを使って研究室のドアに近づいたらカギが開くようにしたりしてる。