Обнаружение другого соседнего устройства Android через Bluetooth - PullRequest
4 голосов
/ 15 июня 2011

Хорошо, у меня тут немного странный вопрос.Я работаю над игрой для Android, в которой я хотел бы, чтобы телефоны Android могли обнаруживать присутствие друг друга.

Устройство, которое ищет других игроков, будет знать MAC-адреса Bluetooth других игроков.устройства (из игровой базы данных), однако устройства не будут сопряжены и устройства не будут находиться в режиме обнаружения.Кроме того, будет только несколько устройств, которые могут быть найдены - так что нет ничего сложного в сканировании по MAC-адресам.

Мне не нужно подключаться к устройствам, мне просто нужно бытьв состоянии ответить на один простой вопрос: это устройство с этим mac-адресом поблизости?

Разрешено, чтобы диалоговое окно сопряжения отображалось на экране другого пользователя ... Мне все равно, каковы результаты их выбораэто ... Мне просто нужно знать, если их устройство там.

Любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 05 сентября 2015

Этот вариант использования может хорошо подойти для недавно выпущенного Nearby API.См. Краткий обзор для разработчиков

У ближайшего есть собственное разрешение времени выполнения, которое избавляет вас от добавления BLUETOOTH_ADMIN или подобного ему манифеста.Он работает на iOS и Android, используя несколько технологий (классический Bluetooth, BLE, ультразвук).Существует возможность использовать только ультразвуковой модем, который уменьшает расстояние до 5 футов.

Ниже приведен частичный пример, более полный образец можно найти на github * 1009.*

// Call this when the user clicks "find players" or similar
// In the ResultCallback you'll want to trigger the permission
// dialog
Nearby.Messages.getPermissionStatus(client)
  .setResultCallback(new ResultCallback<Status>() {
    public void onResult(Status status) {
      // Request Nearby runtime permission if missing
      // ... see github sample for details
      // If you already have the Nearby permission,
      // call publishAndSubscribe()
    }
  });

void publishAndSubscribe() {
  // You can put whatever you want in the message up to a modest
  // size limit (currently 100KB). Smaller will be faster, though.
  Message msg = "your device identifier/MAC/etc.".getBytes();
  Nearby.Messages.publish(googleApiClient, msg)
      .setResultCallback(...);

  MessageListener listener = new MessageListener() {
    public void onFound(Message msg) {
      Log.i(TAG, "You found another device " + new String(msg));
    }
  });

  Nearby.Messages.subscribe(googleApiClient, listener)
    .setResultCallback(...);
}

Отказ от ответственности Я работаю над API-интерфейсом Nearby

...