我目前正在开发一个通过蓝牙连接到乐器的Android应用程序,需要编写字符串命令并接收字符串响应。目前,我可以通过Wi-Fi为TCP / IP进行连接/读取/写入,现在尝试实现蓝牙。但是我遇到了一些障碍。我一直在网上搜索,试图找到类似的例子,但没有任何运气。我一直在使用Android开发人员资源示例:Bluetooth Chat作为主要参考点。
我当前的代码似乎可以正常工作。然后在连接点引发服务发现失败异常。我正在使用DeviceListActivity该类来发现和选择要连接的设备。它返回anActivityResult,然后我的Bluetooth类等待它处理它,然后进行连接。下面的代码几乎与蓝牙聊天应用程序相同。
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(!m_BluetoothAdapter.isEnabled())
{
m_BluetoothAdapter.enable();
}
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:
// When DeviceListActivity returns with a device to connect
if (resultCode == Activity.RESULT_OK) {
// Get the device MAC address
String address = data.getExtras()
.getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
// Get the BLuetoothDevice object
BluetoothDevice device = m_BluetoothAdapter.getRemoteDevice(address);
// Attempt to connect to the device
connect(device);
}
break;
case REQUEST_ENABLE_BT:
// When the request to enable Bluetooth returns
if (resultCode == Activity.RESULT_OK) {
// Bluetooth is now enabled, so set up a chat session
}
else {
// User did not enable Bluetooth or an error occured
Toast.makeText(this, "Bluetooth not enabled", Toast.LENGTH_SHORT).show();
finish();
}
}
}
这是我的连接功能:
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
private void connect(BluetoothDevice device) {
m_Device = device;
BluetoothSocket tmp = null;
// Get a BluetoothSocket for a connection with the
// given BluetoothDevice
try {
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
}
catch (IOException e) {
}
m_Socket = tmp;
m_BluetoothAdapter.cancelDiscovery();
try {
// This is a blocking call and will only return on a
// successful connection or an exception
m_Socket.connect();
}
catch (IOException e) {
try {
m_Socket.close();
}
catch (IOException e2) {
}
return;
}
}
希望我做错的事情很简单,但恐怕从来没有那么容易。这是我第一次进行任何蓝牙开发,也许我做的是公然的错误……但是我不确定为什么我会发现服务发现失败异常。
你可以随时在手机上手动配对/查找设备……它确实需要密码,但是我认为这不是我遇到的问题。
我不得不替换:
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
与:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
tmp = (BluetoothSocket) m.invoke(device, 1);
并奏效!
问题内容: 我正在尝试创建一个用于测试设备的基本蓝牙应用程序。 我从developer.android获得了代码。这是链接:http : //developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices 这是我的线程代码的运行部分: 无论我尝试了什么,都行不通。总是抛出IOException,我从l
我正在尝试创建一个基本的蓝牙应用程序,用于测试设备。 我从开发者那里得到了代码。Android以下是链接:http://developer.android.com/guide/topics/connectivity/bluetooth.html#ConnectingDevices 这里是运行我的线程代码的一部分: 无论我尝试了什么
我正在写一个蓝牙游戏与蓝牙部分基于Android蓝牙聊天样本。我有两部手机要测试。问题在这里,当我将一部手机连接到另一部手机时,它有时会显示“无法连接设备”捆绑包,但当我运行蓝牙聊天示例时,它从未显示这一点,所以我认为这不是设备的问题。有没有人研究过蓝牙聊天样本,有同样的问题,会给我一些帮助? 我尝试打印异常,它就像“java.io.IOExc0019:服务发现失败”。这是导致异常的代码。 确切位
我正在尝试将蓝牙设备与我的android应用程序连接。到目前为止,它运行良好。 现在的问题是,当我的设备超出范围时,我显示一个对话框并要求用户重新连接或不连接。 有时我能够重新连接设备,有时我确实会出错,即。 我真的不知道为什么会这样
1.1. 蓝牙相关代码目录: 1.2. 更新代码后如果发生编译通不过或者运行时错误的情况: 1.3. 如果模组相同,只是迁移平台: 1.4. 如果模组切换,则还需要增加的步骤: 1.5. 如果厂商需要定义自己的 BLE 的 UUID: 1.6. 如何确认蓝牙服务已经正常: 1.1. 蓝牙相关代码目录: buildroot/package/aml_brcm_bsa:博通模组厂商提供的代码包,主要是m
我正在与Bluez一起使用带有USB蓝牙加密狗的TinyCore linux盒。我们使用示例gatt服务器添加电池服务以发送降低的电池电量。使用蓝牙,我们的控制器(USB蓝牙加密狗)的信息显示服务: 我们的目标是在Android应用程序上阅读此内容,但在我们的自定义应用程序和示例BLE扫描应用程序中,我们看到的唯一服务是00001800(通用访问配置文件)和00001801(通用属性配置文件)。