检测智能手机是否在范围内

时间:2016-10-19 09:30:03

标签: java android smartphone

我试图设计一个简单的应用程序,它可以使用其他设备(wifi,蓝牙等)上启用的任何传感器来检测附近的设备。可以把它想象成一个应用程序,可以检测到所有者何时靠近房子并向另一个设备发送消息(例如覆盆子PI或其他任何设备)以自动解锁门。

  1. 可以使用哪些传感器?
  2. 是否可以获取唯一可识别信息(例如设备名称,设备ID,MAC地址)而无需配对/连接?

2 个答案:

答案 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)

  1. 蓝牙

    就像@Ganesh Pokale所说,我们可以先启动蓝牙扫描,如果其他蓝牙已开启并且能够被发现,那么我们就可以接收广播了。要开始发现,请使用BluetoothAdapter.startDiscovery。在我们收到的动作中,我们可以获得BluetoothDevice类,其中包含devicename,蓝牙mac地址等。我建议您在Android API Guides Bluetooth中找到更多详细信息。

  2. 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中找到更多详细信息。