Как узнать, когда другой телефон находится в 10 метрах от меня - PullRequest
0 голосов
/ 17 июня 2020

Допустим, я хочу создать приложение android, которое будет установлено на 2 устройства. Я хочу знать, когда одно устройство находится на расстоянии более 10 метров от другого. Какие технологии я буду использовать для этого? (например, бесконтактные карты, RFID, NF c, et c). И как я должен go реализовать это в android, вообще говоря? Спасибо

Ответы [ 2 ]

3 голосов
/ 18 июня 2020

Есть несколько вариантов.

Вы можете использовать Bluetooth Low Energy API и сканировать подобные устройства. Вы также можете добавить информацию о другом устройстве в качестве фильтра, и он будет сканировать только это устройство.

List<ScanFilter> filters = new ArrayList<> ();
filters.add(/*create your scan filter*/);

ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .build();

ScanCallback callback = new ScanCallback() {
    @Override public void onBatchScanResults(List<ScanResult> results) {
        // Do something with scan results
    }
    @Override public void onScanFailed(int errorCode) {
        // Notify error code
    }
    @Override public void onScanResult(int callbackType, ScanResult result) {
        // Do something with scan result
    }
};

mBluetoothAdapter.getBluetoothLeScanner().startScan(filters, settings, callback);

Другой вариант - попробовать часы Samsung Active 2, которые могут сканировать на BLE и обнаруживать другие. Сейчас на Navigine мы работаем с ними, и они показывают довольно хорошие результаты. Однако вам нужно будет написать код для Tizen OS. Если у Вас возникнут вопросы, напишите нам!

1 голос
/ 17 июня 2020

Bluetooth с низким энергопотреблением (BLE), вероятно, именно та технология, которую вы ищете. Он широко доступен на современных телефонах Android и должен позволять определять расстояние на расстоянии около 10 м.

BLE имеет свои особенности и ограничения. Обычно точность снижается по мере увеличения расстояния между двумя устройствами. И сигнал колеблется, когда рядом идут люди. Я обнаружил, что в этой статье объясняется довольно четко.

Вам нужно будет написать приложение-маяк, которое будет работать на телефоне A для передачи пакетов. Затем другое приложение сканера, которое запускается на телефоне B для приема пакетов и оценки расстояния от уровня сигнала (RSSI).

Уже есть приложения для работы в качестве сканера (например, https://play.google.com/store/apps/details?id=com.bridou_n.beaconscanner) и маяк (например, https://play.google.com/store/apps/details?id=net.alea.beaconsimulator). Вы можете попробовать его перед тем, как написать свой собственный. * который является более низким уровнем

API сообщений о ближайшем окружении который является более высоким уровнем Сторонние API, например Android Beacon Library
...