2016-10-19 5 views
1

Ich versuche, eine einfache App zu entwickeln, die erkennt, welche Geräte in der Nähe sind und welche Sensoren auf den anderen Geräten (WLAN, Bluetooth usw.) aktiviert sind. Betrachten Sie es als eine App, die erkennen kann, wenn der Besitzer in der Nähe des Hauses ist und eine Nachricht an ein anderes Gerät (z. B. Raspberry PI oder was auch immer) senden, um die Tür automatisch zu entsperren.Erkennen, ob ein Smartphone in Reichweite ist

  1. Welche Sensoren können verwendet werden?
  2. Können eindeutig identifizierbare Informationen (wie Gerätename, Geräte-ID, MAC-Adresse) ohne Pairing/Verbindung erhalten werden?

Antwort

1

Sie können dies mit Bluetooth erreichen. 1) Aus der gepaarten Liste entfernen, wenn beide gepaart sind. 2) Scannen nach Bluetooth

registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); 

und hier gibt es in der Nähe Geräte

private final BroadcastReceiver receiver = new BroadcastReceiver(){ 
@Override 
public void onReceive(Context context, Intent intent) { 

    String action = intent.getAction(); 
    if(BluetoothDevice.ACTION_FOUND.equals(action)) { 
     int rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE); 
     // Use this as signal(device is near or Far) 
     Toast.makeText(getApplicationContext()," RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show(); 
    } 
} 
}; 
+0

OK, macht Sinn. Ich beginne zu erkennen, dass dies nicht mit dem Telefon alleine funktionieren wird. Ich denke, ich benutze nur ein Schlüsselbund-Bluetooth-Tag, weil das Bluetooth auf dem anderen Telefon möglicherweise ausgeschaltet ist. – Kiril

0
  1. Bluetooth erhalten

    Genau wie @Ganesh Pokale sagte, wir erste Bluetooth-Scan starten können, wenn anderen Bluetooth ist an und kann entdeckt werden, dann können wir die Sendung empfangen. Um die Erkennung zu starten, verwenden Sie BluetoothAdapter.startDiscovery. In der Aktion, die wir erhalten haben, können wir BluetoothDevice Klasse erhalten, die Devicename, Bluetooth-MAC-Adresse und so weiter enthält. Ich schlage vor, dass Sie mehr Details in Android API Guides Bluetooth finden.

  2. Wi-Fi Direct

    Wi-Fi Direct wird auch als ‚Wireless-LAN P2P‘ genannt, wenn andere Wi-Fi Direct eingeschaltet ist, können wir sie scannen, und ihre Informationen erhalten, aber es ist ein wenig complicater als Bluetooth. Zuerst scannen wir mit WifiP2pManager.discoverPeers. Dieser Anruf ist asynchron und wir benötigen einen Broadctreceiver, um Ergebnisse zu empfangen. Wenn action im Broadcast-Empfänger gleich WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION ist, können wir verfügbare Peers mit WifiP2pManager.requestPeers(mChannel, myPeerListListener) anfordern. Die requestPeers() Methode ist auch asynchron und wir erhalten die Geräteliste in myPeerListListener. Diese Liste enthält WifiP2pDevice Klasse, die Devicename, WIFIP2P MAC-Adresse und so weiter enthält. Ich schlage vor, dass Sie mehr Details in Android API Guides WifiP2pManager finden.

Verwandte Themen