Android蓝牙连接问题

Posted

技术标签:

【中文标题】Android蓝牙连接问题【英文标题】:Android Bluetooth Connection Problems 【发布时间】:2011-12-23 06:38:49 【问题描述】:

我正在尝试在我的 Andorid 手机(使用 SL4A)上运行一个简单的 python 脚本来连接到 BlueSMiRF 蓝牙调制解调器(基于 RN41 设备),但是无论我尝试什么,当我遇到以下错误时我尝试连接。

java.io.IOException: 无法启动服务发现

python脚本如下所示

import android

droid = android.Android()
droid.toggleBluetoothState(True)

result = droid.bluetoothConnect()
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb')
#result = droid.bluetoothConnect('00001101-0000-1000-8000-00805f9B34fb', '00:06:66:07:AE:44')

print repr(result)

droid.toggleBluetoothState(False)

我已经尝试了bluetoothConnect() 的所有三种变体,如上面的代码所示。如果我尝试前两种连接方法,我也可以在要连接的设备列表中看到blueSMiRF

我的 arduino 草图(在 Arduino Mega 上运行)如下所示。它只是将字符从一个端口转发到另一个端口。 Serial 在 9600 连接到我的笔记本电脑,Serial1 在 115200 连接到 BlueSMiRF

void setup ()

  // initialise serial
  Serial.begin(9600);  
  Serial1.begin(115200);  


void loop ()


  if (Serial1.available())
  
    char c = Serial1.read(); 
    Serial.print(c); 
  

  if (Serial.available())
  
    char c = Serial.read();        
    Serial1.print(c); 
  
 

我可以通过输入$$$ 来使用Putty 访问blueSMiRF 的命令模式。一切似乎都还好。我只是对服务类和设备类的设置有一点担心。这些分别设置为0x00000x1f00 的出厂默认值,我想知道服务类是否可能需要设置为0x1101(SSP 的UUID)。

其他信息: 安卓版本 2.3.3 SL4A r4

【问题讨论】:

您可能想尝试在 Py4A 邮件列表中询问或检查 Py4A 问题。 【参考方案1】:

当 blueSMiRF 与 arduino 板通信时,为它切换 RX-TX。

如果您能够通过 PC 连接到 blueSMiRF,则它具有 RX-TX 设置作为 arduino 板。

PC 到 blueSMiRF 设置: PC TX --> Arduino RX --> blueSMiRF RX PC RX

Arduino 到 blueSMiRF 设置: Arduino RX --> blueSMiRF TX Arduino TX RX

【讨论】:

【参考方案2】:

PyBluez 模块总体上运行良好,我已经将它与 SL4A 一起使用,没有任何问题。使用它并完全跳过 Java 可能会更好。

PyBluez 不是纯 Python 模块,因此必须对其进行编译,但这已经完成,最新版本可从 Py4A 站点的 downloads 部分获得。这是我个人使用的副本,没有任何问题。

只需将副本下载到您的 droid,打开 Python4Android 应用,点击 Import Modules,然后选择 PyBluez egg。

【讨论】:

以上是关于Android蓝牙连接问题的主要内容,如果未能解决你的问题,请参考以下文章

Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附源码)

syu android蓝牙连接方法

android中怎样判断蓝牙是不是连接

android的蓝牙匹配连接

Android BLE蓝牙踩坑总结

为啥android6.0的手机不能连接蓝牙