É possível encontrar outros telefones próximos?

Estou escrevendo um aplicativo para Android que gostaria de portar para iOS e Windows Mobile (embora não saiba absolutamente nada sobre eles no momento). Gostaria que meu aplicativo encontrasse outros telefones em um determinado raio (talvez 20 a 30 pés) que também tenham o jogo instalado, para que os usuários possam interagir com outras pessoas em seu espaço físico atual. Isso é possível e, se sim, como?

Como planejo o aplicativo que requer conexão à Internet, meu primeiro pensamento foi usar o GPS, conforme descrito emEncontre outros dispositivos próximos por iOS (localizações GPS), mas isso exigiria a transmissão contínua de dados ao servidor para atualizar o local do usuário usando largura de banda e bateria (sem mencionar os recursos do servidor). O GPS também parece demorar um pouco para obter qualquer tipo de correção precisa, e mesmo que eu não armazene dados históricos, não esperaria que os usuários confiassem em mim esse tipo de informação privada (também não deveriam!)

Eu sei que existem tecnologias proprietárias, como a NFC da Sony, mas esse é um foco muito restrito para usar em um aplicativo que eu gostaria de ser independente de dispositivos e sistemas operacionais. Que outras opções existem? Supondo que o usuário esteja disposto a conceder ao aplicativo as permissões apropriadas, que outros métodos podem permitir que um dispositivo encontre outro próximo, dentro de uma faixa de 10 a 15 metros, o que é prático para uma grande base de usuários (mais de um milhão)? A localização geográfica do HTML5 é um caminho melhor? Ou o GPS é minha única opção real?

Eu encontreiUse o GPS do Android para detectar e conectar-se a outros telefones, mas esperava que os últimos anos abrissem mais opções.

ATUALIZAR

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 usuários que instalam este aplicativo terão um agente em execução em segundo plano para atualizar sua geolocalização atual e ouvir pings. Qualquer usuário pode abrir o programa completo e enviar uma solicitação rápida para todos os outros usuários próximos. Se eu for pela rota do servidor central, o servidor responderá a essa solicitação com uma lista de nomes de usuário próximos. O usuário pode escolher um deles para iniciar uma conexão. Nesse caso, o dispositivo de destino emite um som para notificar uma solicitação de conexão.

A partir daí, é fácil lidar com a interação entre dois dispositivos. Encontrar esses usuários próximos é o ponto de partida para mim.

questionAnswers(2)

yourAnswerToTheQuestion