【发布时间】:2010-10-13 10:56:21
【问题描述】:
我正在为安卓开发一个应用程序。只是一个一般性问题,是否可以连接到不可公开发现的设备?
提前致谢。
【问题讨论】:
我正在为安卓开发一个应用程序。只是一个一般性问题,是否可以连接到不可公开发现的设备?
提前致谢。
【问题讨论】:
如果您之前已与该设备配对,则即使该设备未处于可发现模式,也可以再次连接。看到这个帖子: programmatically-connect-to-paired-bluetooth-device
// use paired devices or create a BluetoothDevice using a mac address
//Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
BluetoothAdapter myAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice remoteDevice = myAdapter.getRemoteDevice("00:00:00:00:00:00");
BluetoothSockt btSocket = remoteDevice.createRfcommSocketToServiceRecord(UUID);
btSocket.connect();
//get input and output stream etc...
【讨论】:
通过可发现我假设您的意思是响应来自另一台设备的设备搜索。一些制造商也将其称为可见的。 根据设备制造商的不同,某些设备允许打开蓝牙并将可见性/发现能力设置为关闭。 因此,如果您已经知道设备的蓝牙地址(MAC 地址),即使设备不可发现/可见,您也可以直接连接到它。 在实践中这是一件好事,许多制造商通过让设备仅在特定时期(如配对过程)可见来实现这一点,或者具有明确的菜单选项以在特定时期打开发现能力。 从安全角度来看,这是一种很好的做法,因为它可以防止设备跟踪/黑客攻击。
例如,默认情况下,当蓝牙打开时,iPhone 是不可发现的(但您仍然可以连接到它),只有当您从设置菜单进入蓝牙菜单时才能发现它。
【讨论】:
在蓝牙标准下是可能的。我已经多次使用我提前知道的 MAC 地址将 Bluegiga 的两个模块连接在一起。
Android 将允许您使用 createInsecureRfcommSocketToServiceRecord 执行此操作
【讨论】: