Uma API simples para desenvolvimento de aplicaçoes indoor.
Listar as informações (MAC, SSID, RSSI, Distância aproximada) de todas as redes, sejam elas Wi-Fi ou Bluetooth, próximas ao dispositivo. Possibilidade de se obter a porcentagem de tempo que um dispositivo ficou próximo a determinada rede.
Para disponibilização da biblioteca será utilizada a plataforma Jitpack, que compartilha a versão mais atualizada do repositório.
- No arquivo
build.gradle
adicione a dependência do jitpack:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- No arquivo
app/build.gradle
adicione a dependência da API:
dependencies {
compile 'com.github.REPOSITORY_OWNER:predetect:VERSION'
}
- Caso necessite utilizar apenas um dos módulos basta adicionar a dependência da seguinte forma:
dependencies {
compile 'com.github.REPOSITORY_OWNER:predetect:MODULE:VERSION'
}
- Passo: Implementar a interface Listener
- Passo: Implementar os metodos "onChange" e "getListenerContext"
- Passo: Obter a intância da classe NetworkManager
- Passo: Registrar a sua Activity para receber os dados das redes
- Passo: Nos metodos "OnPause", "OnDestroy", utilizar o metodo "unregisterListener" para remover sua activity da lista de listeners.
- Passo: No metodo "OnResume", registre sua activity novamente.
Todos os passos estão representados logo abaixo na classe de exemplo:
class MainActivity : AppCompatActivity(), Listener {
private lateinit var manager: NetworkManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Obtendo a instancia de NetworkManager
manager = NetworkManager.getInstance()
// Registrando sua activity para receber os dados das redes WiFi
manager.registerListener(this)
}
override fun onChange(list: List<WiFiData>) {
// Lista de redes WiFi próximas.
}
override fun getListenerContext(): Context = this
override fun onPause() {
manager.unregisterListener(this)
super.onPause()
}
override fun onDestroy() {
manager.unregisterListener(this)
super.onDestroy()
}
override fun onResume() {
manager.registerListener(this)
super.onResume()
}
}
Essa funcionalidade permite detectar a porcentagem de presença de um dispositivo dentro de um raio de distância do ponto.
-
Dados necessarios:
- Lista de MAC do(s) ponto(s) de referência.
- Tempo total para checagem em minutos.
- Distância do raio em metros.
- (Opcional) Intervalo de checagem em minutos.
-
Retorno:
- Lista de Data com todas as informações da rede, inclusive a porcentagem de tempo que o dispositivo ficou próximo.
-
Modo de Uso:
- Step: Implemente a interface "Observer"
- Step: Sobrescreva o método
onObservingEnds(networkResult: NetworkResult<Data>)
- Step: Obtenha uma instância da classe "NetworkManager"
- Step: O serviço irá iniciar assim que chamar o método
observeNetwork(observer : Observer, listMACsToObserve : List<String>, timeInMinutes : Int, maxRangeInMeters : Double, intervalTimeInMinutes : Int)
- Step: Quando o serviço terminar o resultado será retornado no meétodo sobrescrito, os dados serão abstraidos em um wrapper
NetworkResult
.
networkResult
.onSuccess { list: List<Data>? ->
// TODO
}
.onFail { list: List<Data>? ->
// TODO
}
.onUndefinedNetwork {
// TODO
}
O parâmetro
list: List<Data>?
representa a lista com os resultados da observação do dispositivo. Para cada objeto nessa lista é possível obter a porcentagem de presença.