我有两部Android手机。我想通过蓝牙在他们之间建立自动连接。例如
我的Android手机与另一个蓝牙配对。当我把这些手机放在一起时,它们需要检测蓝牙设备,并自动连接到选定的Android手机(已知地址/MAC/之前配对)。我不需要再连接它。我想在我的Android应用程序中实现这种连接。
我在谷歌上找到了一些相关的参考资料,但他们都还没有解决这个问题。我认为我需要创建一个线程/服务,当蓝牙在范围内时自动连接。然而,我无法实现它。如果你有一个好的解决方案,请让我知道。非常感谢。
在范围内时自动连接到配对的蓝牙设备
自动查找已配对的蓝牙设备,当它们在范围内时
/**
* The BroadcastReceiver that listens for discovered devices and changes the title when
* discovery is finished
*/
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// If it's already paired, skip it, because it's been listed already
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
mNewDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
}
// When discovery is finished, change the Activity title
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
setProgressBarIndeterminateVisibility(false);
setTitle(R.string.select_device);
if (mNewDevicesArrayAdapter.getCount() == 0) {
String noDevices = getResources().getText(R.string.none_found).toString();
mNewDevicesArrayAdapter.add(noDevices);
}
}
}
};
只有在发现过程运行后,这些广播接收器才会启动。
发现可以通过两种方式启动:在蓝牙设置中手动启动,或者通过调用BluetoothAdapter#startDiscovery()以编程方式启动。然而,文件指出:
设备发现是一个重量级的过程。在发现过程中不应尝试与远程蓝牙设备的新连接,并且现有连接将经历有限的带宽和高延迟。使用取消Discovery()
取消正在进行的发现。Discovery不是由Active管理的,而是作为系统服务运行的,因此应用程序应始终调用取消Discovery()
,即使它没有直接请求发现,只是为了确保。
这意味着发现应该作为一次性程序完成,而不是在后台连续运行——除了减慢其他蓝牙连接之外,它还会迅速耗尽电池。
我在连接时遇到问题。起初它有效,而不是不起作用,除非我取消配对设备。我已经得到了所有可能发生的异常,套接字关闭,管道关闭,连接被拒绝,端口已经在使用中,等等。 我知道android 4.2之前版本的蓝牙存在问题(https://code.google.com/p/android/issues/detail?id=37725). 我在连接这些设备时遇到问题的设备: Htc one(Android4.
嗨,我要开发一个应用程序,所以我有一个设备(服务器)与3个客户端。我做了所有的验证,打开蓝牙,找到设备,所有的工作都很好。但当我要连接一个设备时,我不知道会发生什么。 我正在使用下一个代码,当我单击一个我想连接它的设备时。我只有我的应用程序在母设备中。 这里我有一个问题,如果它没有配对会发生什么?如果我尝试连接,它会自动配对吗? 我的UUID是:“00001101-0000-1000-8000-0
在调用连接时,我们得到一个错误: 堆栈跟踪以:
问题内容: 我在Xcode 6操场上有以下代码: 我刚刚开始在OSX下使用蓝牙,而我目前想要的只是一系列设备清单。 它似乎根本没有调用我的委托方法。 我是OSX开发和Swift的新手,所以要保持柔和。:) 问题答案: 要告诉Playground您的代码在后台执行某些操作,您必须调用并调用。 这将使IOBluetoothDeviceInquiry在Playground中保持活动状态,并允许它在完成后
我正在开发一款连接蓝牙物联网设备的Flitter应用程序。我正在使用Flatter_blue图书馆。该库允许扫描附近的蓝牙设备。基于该扫描,您可以“连接”到设备。没有与设备配对的概念。 根据我以前在手机上使用蓝牙的经验(连接到我的汽车和蓝牙扬声器时),我必须在Android操作系统上配对设备。 我很好奇,从高层次上讲,配对设备和连接设备之间有什么区别。此外,更具体地说,在操作系统内配对设备与扫描并
连接设备 接口说明 用于连接 扫描出来的蓝牙设备。 参数说明 字段 类型 必须? 说明 device RKBLEDevice 是 蓝牙设备 示例代码 Swift: RokidMobileSDK.binder.connect(device: RKBLEDevice) Objc: [RokidMobileSDK.binder connect:device]; 断开设备 接口说明 用于断开已经连接的