2015-08-03 2 views
5

Я пытаюсь обнаружить маяки вокруг меня, но с API-интерфейсом поблизости я не могу найти их.Обнаружение маяка (Eddystone) с Android API по API

Я использую этот метод для обнаружения устройств поблизости:

public void startDiscovery(String serviceId, final OnDiscoveryListener l) { 

    Nearby.Connections.startDiscovery(googleApiClient, serviceId, Connections.DURATION_INDEFINITE, new Connections.EndpointDiscoveryListener() { 
     @Override 
     public void onEndpointFound(String endpointId, String deviceId, String serviceId, String endpointName) { 
      if (l != null) { 
       l.onEndpointFound(endpointId, deviceId, serviceId, endpointName); 
      } 

     } 

     @Override 
     public void onEndpointLost(String s) { 
      if (l != null) { 
       l.onEndpointLost(s); 
      } 
     } 
    }) 
      .setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        if (l != null) { 
         l.onResult(status); 
        } 
       } 
      }); 
} 

Слушатель выглядит следующим образом:

public interface OnDiscoveryListener { 
    public void onResult(Status status); 

    public void onEndpointFound(String endpointId, String deviceId, String serviceId, String endpointName); 

    public void onEndpointLost(String s); 
} 

Но я не могу обнаружить что-нибудь

+0

Для уверенности: действительно ли были устройства, поддерживающие api поблизости? – Fildor

+0

Да, я проверил, один из них - это маяк Estimote, который входит в список партнеров для Eddystone, а другой - Nexus 5. Я провел некоторое испытание между Nexus 5 и Galaxy S5, и он обнаружил и подключился к каждому Другие. – Tsunaze

ответ

2

Даже если Google рекламируется использование API-интерфейса поблизости для обнаружения маяков вокруг нас:

Близлежащий API для Android и прошивки делает его более легким для приложений, чтобы найти и общаться с другими устройствами и маяками

Источник: http://android-developers.blogspot.be/2015/07/lighting-way-with-ble-beacons.html

я не смог воспользоваться близлежащим API для обнаружения Eddystone маяков , Я опишу всю информацию, которую я собрал во время своих исследований, надеясь, что это может сэкономить некоторое время.

У меня была настройка того же кода, что и вы, чтобы обнаружить маячки с оценкой, но я не смог найти идентификатор службы, чтобы предоставить Nearby.Connections.startDiscovery(), чтобы он обнаружил мой маяк (я пытался использовать маяк UUID и некоторые варианты без успех).

Я нашел на веб-сайте Estimote, что вам необходимо обновить прошивку маяка, чтобы настроить его как маяк Eddystone: http://developer.estimote.com/eddystone/#configure-estimote-beacons-to-broadcast-eddystone. Мой не был таким, я сделал это.

Тем не менее, это не решило мою проблему, и я все еще не мог обнаружить маяк, используя API-интерфейс. Я попробовал установить его как Eddystone-UID и URL-адрес Eddystone и пробовал несколько комбинаций (на основе информации, предоставленной приложением Estimote) в качестве идентификатора службы безуспешно.

Более глубокий взгляд в документацию близлежащего API показывает, что Google ничего не знаю о маяках, ни Eddystone в их поблизости документациях API (https://developers.google.com/nearby/connections/overview) и образец Google, о маяках не говоря уже не использует Соседний API на всех: https://github.com/google/beacon-platform/tree/master/samples/android

Тем не менее, они упоминают, что поблизости сообщения позволит богатое взаимодействие, например, как «совместное редактирование, формирование группы, голосование, или вещания ресурс» и в ближайшее время:

скоро: Близлежащие сообщения API будет доступ в службу Google Play 7.8. Этот сайт будет обновлен с полной документацией API, когда новая версия будет доступна.

Источник: https://developers.google.com/nearby/

Мое понимание является поддержка маяков будет доступна с Google Play Services 7.8, так как маяки передают ресурсы.

В то же время, если вы все еще хотите, чтобы быть в состоянии обнаружить Eddystone маяки вокруг вас, вы можете использовать Estimote в Android SDK: https://github.com/estimote/android-sdk#quick-start-for-eddystone или реализуют один и тот же код, как образец Beacon Proximity Google: https://github.com/google/beacon-platform/tree/master/samples/android

+0

В этом случае он будет работать с API сообщений об ошибках! – Tsunaze

+2

В прямом эфире: https://developers.google.com/nearby/messages/android/get-beacon-messages –

+0

обратитесь к @Andrew Bunners ответ –

4

я работаю по API-интерфейсу Google в Google. В приведенном выше фрагменте кода используется API Connections Connections, который фактически ориентирован на различные варианты использования. Для работы с Eddystone используйте API поддерживаемых сообщений. Ниже приведены an example из-за сообщений о близости, чтобы подписаться на присутствие маяков.

Обратите внимание, что вам необходимо сначала связать полезную нагрузку с помощью маяка, используя Proximity Beacon API.

+0

Однако мне не повезло с обнаружением маяков с апи! Я уверен, что идея API поддерживаемых сообщений - заменить обычный bluetooth-сканер? –

+1

Проверьте ответы на [этот вопрос] (http://stackoverflow.com/questions/32453165/not-able-to-find-eddystone-beacons-using-google-nearby-api). Там несколько бит, чтобы получить право, стратегия BLE_ONLY, получить пользователя, зарегистрировав маяки, соответствующие ключи API, ... –

+0

Думаю, вы не можете использовать Near APO без API Proximity? – JavierSP1209

0

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

У меня была аналогичная проблема: все в моем коде было правильным, но не обнаруживало маяки. Я даже пробовал с приложениями производителей, и их также не удалось обнаружить маяк (но их версия для iPhone была сделана). Я выключил Wi-Fi, затем снова включился, и приложение для производителей работало, а также мое.

0

Да, вы можете обнаружить радиомаяки Eddystone, используя API-интерфейс. Но для обнаружения маяков вы должны использовать Nearby Messages API, а не Nearby Connections API, как упоминает @ Andrew Bunner.

Чтобы быть в состоянии обнаружить маяки с помощью NearbyMessagesAPI вам придется также регистрировать маяки с Google первым, и чем настроить их, чтобы иметь полезную нагрузку сообщения, связанные с ними.

Вы можете найти все шаги в моем blog post или этом other answer, который я разместил.

Смежные вопросы