Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测智能手机是否在范围内_Java_Android_Smartphone - Fatal编程技术网

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

Java 检测智能手机是否在范围内,java,android,smartphone,Java,Android,Smartphone,我正在尝试设计一个简单的应用程序,它使用其他设备(wifi、蓝牙等)上启用的任何传感器来检测附近的设备。可以将其视为一个应用程序,它可以检测主人何时靠近房子,并向另一个设备(如raspberry PI或其他任何设备)发送消息以自动解锁门 可以使用哪些传感器 无需配对/连接即可获得唯一可识别信息(如设备名称、设备Id、MAC地址) 您可以使用蓝牙来实现这一点。 1) 如果两者都是成对的,则从成对列表中删除。 2) 扫描蓝牙 registerReceiver(receiver, new Inten

我正在尝试设计一个简单的应用程序,它使用其他设备(wifi、蓝牙等)上启用的任何传感器来检测附近的设备。可以将其视为一个应用程序,它可以检测主人何时靠近房子,并向另一个设备(如raspberry PI或其他任何设备)发送消息以自动解锁门

  • 可以使用哪些传感器
  • 无需配对/连接即可获得唯一可识别信息(如设备名称、设备Id、MAC地址)

  • 您可以使用蓝牙来实现这一点。 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();
        }
    }
    };
    
  • 蓝牙

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

  • WifiDirect

    WifiDirect也被称为“WIfi P2P”,如果其他人的WifiDirect打开,我们可以扫描他们,获取他们的信息,但它比蓝牙稍微复杂一些。首先,我们开始扫描使用
    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地址等。我建议您在中查找更多详细信息


  • 好的,有道理。我开始意识到单用手机是不行的。我想我会使用钥匙链蓝牙标签,因为另一部手机上的蓝牙可能会关闭。