Java 检测智能手机是否在范围内
我正在尝试设计一个简单的应用程序,它使用其他设备(wifi、蓝牙等)上启用的任何传感器来检测附近的设备。可以将其视为一个应用程序,它可以检测主人何时靠近房子,并向另一个设备(如raspberry PI或其他任何设备)发送消息以自动解锁门Java 检测智能手机是否在范围内,java,android,smartphone,Java,Android,Smartphone,我正在尝试设计一个简单的应用程序,它使用其他设备(wifi、蓝牙等)上启用的任何传感器来检测附近的设备。可以将其视为一个应用程序,它可以检测主人何时靠近房子,并向另一个设备(如raspberry PI或其他任何设备)发送消息以自动解锁门 可以使用哪些传感器 无需配对/连接即可获得唯一可识别信息(如设备名称、设备Id、MAC地址) 您可以使用蓝牙来实现这一点。 1) 如果两者都是成对的,则从成对列表中删除。 2) 扫描蓝牙 registerReceiver(receiver, new Inten
您可以使用蓝牙来实现这一点。 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();
}
}
};
BluetoothAdapter.startDiscovery
。在我们收到的操作中,我们可以得到BluetoothDevice
类,该类包含devicename、bluetooth mac地址等。我建议您在中查找更多详细信息
WifiP2pManager.discoverPeers
。这个调用是异步的,我们需要一个broadcastreceiver来接收结果。在broadcastreceiver中,如果action
等于WifiP2pManager.WIFI\u P2P\u PEERS\u CHANGED\u action
,则我们可以使用WifiP2pManager.requestPeers(mcchannel,mypeerlistener)
请求可用的对等方。requestPeers()
方法也是异步的,我们将在MyPeerListener中获取设备列表。此列表将包含WifiP2pDevice
类,其中包含devicename、wifip2p mac地址等。我建议您在中查找更多详细信息
好的,有道理。我开始意识到单用手机是不行的。我想我会使用钥匙链蓝牙标签,因为另一部手机上的蓝牙可能会关闭。