我试图设计一个简单的应用程序,它可以使用其他设备(wifi,蓝牙等)上启用的任何传感器来检测附近的设备。可以把它想象成一个应用程序,可以检测到所有者何时靠近房子并向另一个设备发送消息(例如覆盆子PI或其他任何设备)以自动解锁门。
答案 0 :(得分:1)
您可以使用蓝牙实现此目的。 1)如果两者配对,则从配对列表中删除。 2)扫描蓝牙
registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
在这里你得到附近的设备
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();
}
}
};
答案 1 :(得分:0)
蓝牙
就像@Ganesh Pokale所说,我们可以先启动蓝牙扫描,如果其他蓝牙已开启并且能够被发现,那么我们就可以接收广播了。要开始发现,请使用BluetoothAdapter.startDiscovery
。在我们收到的动作中,我们可以获得BluetoothDevice
类,其中包含devicename,蓝牙mac地址等。我建议您在Android API Guides Bluetooth中找到更多详细信息。
Wi-Fi直连
WifiDirect也被称为' WIfi P2P'如果其他WifiDirect开启,我们可以扫描它们并获取它们的信息,但它比蓝牙更复杂一些。首先,我们开始扫描使用
WifiP2pManager.discoverPeers
。这个调用是异步的,我们需要一个广播接收器来接收结果。在广播接收方中,如果action
等于WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION
,那么我们可以请求WifiP2pManager.requestPeers(mChannel, myPeerListListener)
的可用对等方。 requestPeers()
方法也是异步的,我们将在myPeerListListener中获取设备列表。此列表将包含WifiP2pDevice
类,其中包含devicename,wifip2p mac地址等。我建议您在Android API Guides WifiP2pManager中找到更多详细信息。