2012-09-24 123 views
50

有人可以给我Android Bluetooth通讯教程链接或提示吗?请不要告诉我参考BluetoothChat示例,我只能了解如何发现并连接到设备,但不知道如何通过蓝牙发送和接收数据。Android蓝牙例子

我实际上正在研究Android和嵌入式Bluetooth设备项目。 请帮我..

+2

您可以基于BluetoothChat示例来发送数据。如果您查看代码,则在通过蓝牙发送之前,文本消息字符串会转换为字节[]。因此,将您的数据转换为byte [],然后发送它。 –

+0

恕我直言聊天的例子很好,只是聊天或更快的通信..当你需要每秒发送超过100条消息,我不知道是否有用。 – Ewoks

回答

5

Android开发者页面有tutorials,并说明如何使用蓝牙功能:
我希望这有助于。

+7

我已经通过这个我可以发现设备,连接它们,但如何发送和接收BT上的数据? – Pratik

9

如其他人所说你的蓝牙通讯我也用下面的链接。

http://developer.android.com/guide/topics/connectivity/bluetooth.html

事情是你所需要的是一类BluetoothChatService.java

这个类有以下主题:

  1. 接受
  2. 连接
  3. 连接

现在,当你调用像BluetoothChatService的启动功能:

mChatService.start(); 

它开始接受线程,这意味着它会开始寻找连接。

现在当你调用

mChatService.connect(<deviceObject>,false/true); 

这里第一个参数是设备对象,你可以从配对的设备列表中获得,或当你扫描设备,你会得到所有范围内,您可以在对象传递给此设备函数和第二个参数是一个布尔值来进行安全或不安全的连接。

connect函数将启动连接线程,该线程将查找运行接受线程的任何设备。

当这种设备被发现两者接受螺纹和连接螺纹将调用连接功能在BluetoothChatService:

connected(mmSocket, mmDevice, mSocketType); 

此方法开始连接线在两个设备: 使用连接螺纹此插座对象获得输入并将流输出到其他设备。 并在while循环中的inputstream上调用read函数,以便始终尝试从其他设备读取数据,以便每当其他设备发送消息时,此读取函数将返回该消息。

BluetoothChatService还有一个write方法,该方法以byte[]作为输入,并在连接的线程上调用write方法。

mChatService.write("your message".getByte()); 

在连接线程中写入方法只是将该字节数据写入其他设备的输出流。

public void write(byte[] buffer) { 
    try { 
     mmOutStream.write(buffer); 
    // Share the sent message back to the UI Activity 
    // mHandler.obtainMessage(
    // BluetoothGameSetupActivity.MESSAGE_WRITE, -1, -1, 
    // buffer).sendToTarget(); 
    } catch (IOException e) { 
    Log.e(TAG, "Exception during write", e); 
    } 
} 

我们两个设备之间的通信,只需拨打mChatService写功能和处理,您将收到其他设备上的消息。

+0

有没有人面对这个聊天服务的问题,它无法连接到设备,甚至连接并立即断开连接? – Jacob

+0

你的解释保存了我的整个一天!谢谢! –

1

由于OP尚未接受任何答案,我将提供几个示例应用程序以连接到特定设备。我不担保代码示例的质量,但是如果您正在寻找一些“真实”代码 - 就连接到传感器设备的应用程序而言,它会从中读取数据,并可能写入这些设备可能有所帮助:

AndroiDAQ是用于原型开发数据采集应用的板卡。制造商Rick Fluck在Github上提供了一个样本,开源Android应用程序。查找文件AndroiDAQService.java。底部的Run()方法显示从DAQ读取和写入数据。 (YMMV)完整的应用程序可以从应用程序商店免费下载,我们发现它经常崩溃,但这可能是因为我们的DAQ板子经常会输出额外的输出,在我们自己的应用程序中,基于Rick的例子,我们处理奇数的额外字符,并且不会因为这个原因而崩溃。)

德州仪器(TI)出售一种廉价的带有少量嵌入式传感器的Bluetooth SensorTag。他们提供a free SDK用于处理标签,IIRC包含Android和iOs应用的源代码。当你进行搜索时要小心,看起来,因为我们购买了我们的产品,所以他们推出了一款名字相同的新设备,它使用的低能量蓝牙智能技术与“传统”蓝牙完全不同。