É possível encontrar outros telefones próximos?

Estou escrevendo um aplicativo Android que gostaria de portá-lo para iOS e Windows Mobile (embora eu não saiba absolutamente nada sobre eles agora). Eu gostaria que meu aplicativo para ser capaz de encontrar outros telefones dentro de um determinado raio (talvez 20-30 Pés) que também têm o jogo instalado para que os usuários possam interagir com os outros em seu espaço físico atual. Isto é possível e, em caso afirmativo, como?

planeio para a aplicação que precise de uma ligação à internet, por isso, o meu primeiro pensamento foi usar GPS. como descrito no iOS Encontrar Outros Dispositivos Próximos (localização GPS), mas que exigiria continuamente a transmissão de dados para o servidor para actualizar a localização do usuário usando tanto a largura de banda e bateria (para não mencionar os recursos do servidor). GPS também parece levar um tempo para obter qualquer tipo de correção precisa, e mesmo que eu não iria armazenar dados históricos eu não esperaria que os usuários confiassem em mim com esse tipo de informação privada (bem que eles não deveriam!)

Eu sei que há propriedade tecnologias, como a NFC da Sony, mas isso é um foco muito estreito para usar para um aplicativo que eu gostaria de ser dispositivo e os agnóstico. Que outras opções existem? Assumindo que o usuário está disposto a dar ao aplicativo as permissões apropriadas, que outros métodos poderiam permitir que um dispositivo para encontrar outro próximo, dentro de uma faixa de 10-15 metros, que é prático para uma grande (milhões+) userbase? A geolocalização HTML5 é um caminho melhor? Ou o GPS é a minha única opção real?

eu encontrei Uso GPS Android para detectar e conectar com outros telefones , mas esperava que os últimos anos tenham aberto outras opções.

actualizar

Obrigado por todas as respostas até agora. Para responder a algumas perguntas colocadas nos comentários e Respostas, pensei em descrever como espero que os aplicativos/dispositivos interajam.

Todos os utilizadores que instalarem esta aplicação terão um agente a correr em segundo plano para actualizar a sua geolocalização actual e para ouvir pings. Qualquer utilizador pode abrir o programe e envie um pedido rápido para todos os outros usuários próximos. Se eu for pela Rota do servidor central, então o servidor responde a esse pedido com uma lista de usernames próximos. O usuário pode então escolher um desses para iniciar uma conexão, caso em que o dispositivo alvo faz um som para notificar uma solicitação de conexão.

A partir daí é fácil lidar com a interacção entre dois dispositivos. Encontrar os utilizadores próximos é o meu ponto fraco.

Author: Community, 2014-01-09

2 answers

Opções que posso ver

  1. Bluetooth (BT). Não sei, se não estou muito céptico, mas vejo alguns problemas. Curto alcance. O maior consumo de energia. Máximo 7 pares conectados ao mesmo tempo (mas talvez seja suficiente...). A grande vantagem é que muitos dispositivos suportam BT.

  2. BT LE (baixa energia). OK, ajuda o problema do consumo de energia. Mas, requer Android 4.3.

  3. WiFi Direct (T. c. p. P2P). Dei-lhe uma oportunidade, estou um pouco decepcionado. O problema é que ele precisa de Android 4.0 ou mais. Pior ainda, alguns dispositivos não precisam de hardware. Eu lancei {[[0]} a partir de amostras de Android no Samsung Xperia Miro ST23i. Clicei em "search" e a única coisa que consegui foi um brinde "activar o P2P WI - FI-nas vossas configurações". Eu cliquei em tudo nessa configuração, há apenas Wi-Fi normal e outras coisas, sem menção sobre direto ou P2P. Xperio Miro apenas não suporta Wi-Fi Directo.

  4. Ligação Wi-Fi com um servidor através de geolocalização de Internet + dispositivo.O servidor mantém as posições dos utilizadores e responde a perguntas como: "quem está a 6 metros do meu alcance?". O problema pode ser a precisão da geolocalização. Se as paredes são grossas ou você está em um lugar na terra com poucos satélites - pode ser muito impreciso.

Resumindo

Há maior probabilidade de alguém ter Wi-Fi ligado o tempo todo do que a BT. A BT também tem alguns limites de tempo após o qual é desligado (eles fazem desta forma para provavelmente economizar bateria). Então, Wi-Fi parece uma escolha melhor do que BT. Se o WiFi Direct for popular o suficiente para ti, eu tentaria. Se não, a opção número 4 parece a melhor. Não é ideal, eu sei, mas neste momento é difícil chegar com algo melhor (ainda precisamos de desenvolvimento de tecnologia, Wi-Fi direto parece promissor).
 12
Author: Adam Stelmaszczyk, 2014-01-08 21:40:00
Eu usaria a abordagem do servidor central. Cada telefone envia dados de posição para o servidor. O servidor notifica os outros utilizadores quando estão ao alcance. Para limitar os dados usados, só enviar posições quando o dispositivo relata movimento mais de X metros.

Também, considere usar um botão de Ping. O usuário pressiona-o para enviar a posição quando deseja encontrar alguém próximo. Os dados de posição só seriam enviados neste ping. Isso usaria muito pouco poder e forneceria bom privacidade.

Pode ser possível detectar detalhes sobre o ponto de acesso Wi-Fi conectado. Se conseguires o endereço do AP ou do Gateway MAC, podes enviar isso como uma espécie de posição. Todos os jogadores no mesmo Portal estariam por perto.
 4
Author: dfowler7437, 2016-09-09 22:09:40