あなたは、Androidのビーコンライブラリを使用することができます。 https://altbeacon.github.io/android-beacon-library/
それは(正確ではありません)の距離を測定値が得られますが、あなたは近いいるビーコンを検出するためにそれらを使用することができます。
例:
public class RangingActivity extends Activity implements BeaconConsumer {
protected static final String TAG = "RangingActivity";
private BeaconManager beaconManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ranging);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.bind(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
beaconManager.unbind(this);
}
@Override
public void onBeaconServiceConnect() {
beaconManager.addRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.i(TAG, "The first beacon I see is about "+beacons.iterator().next().getDistance()+" meters away.");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
}
そうでない場合、あなたはデバイスのためのRSSIを読み、時間をかけてそれらを平均化し、外れ値を取り出すことができます。より近いものほど大きなもの(大きさはより正のもの)です。
出典
2017-02-15 21:24:17
zed
高いRSSIでは、一般的にデバイスがcolserになります。しかし、デバイスのTX強度設定のために正しくない可能性があります。 –
どちらが良いですか、最高のrssiを使用するか、最初にメートル単位で計算しますか?私は式を見つけました。http://developer.radiusnetworks.com/2014/12/04/fundamentals-of-beacon-ranging.html –
RSSIからの距離を計算することはできません。道はない。より近いデバイスがより低いRSSIを持つ状況に直面することさえできます –