Android蓝牙示例
任何人都可以给我Android Bluetooth
通信教程链接或提示? 请不要告诉我参考BluetoothChat示例,我只能了解如何发现和连接到设备,但不知道如何通过蓝牙发送和接收数据。
实际上我正在开发一个Android和embedded式Bluetooth
设备项目。 请帮我解决
我想最好是通过本教程了解蓝牙连接。
http://luugiathuy.com/2011/02/android-java-bluetooth/
http://code.google.com/p/android-bluetooth-touchpad/wiki/FrameworkTutorial 🙂
我也使用下面的链接,因为别人build议你进行蓝牙通信。
http://developer.android.com/guide/topics/connectivity/bluetooth.html
所有你需要的是一个类BluetoothChatService.java
这个类有以下线程:
- 接受
- 连
- 连接的
现在,当您调用BluetoothChatService的启动function时,如:
mChatService.start();
它开始接受线程,这意味着它将开始寻找连接。
现在当你打电话
mChatService.connect(<deviceObject>,false/true);
这里的第一个参数是设备对象,你可以从配对的设备列表中获取,或者当你扫描设备时,你将得到所有设备的范围,你可以将该对象传递给这个函数,第二个参数是一个布尔值,以实现安全或不安全的连接。
connect
function将开始连接线程,它将寻找任何正在运行接受线程的设备。
当这样的设备被发现既接受线程和连接线程将调用BluetoothChatService中的连接function:
connected(mmSocket, mmDevice, mSocketType);
这个方法在两个设备中启动连接的线程:使用这个socket对象连接的线程获取input和输出stream到其他设备。 并且在一个while循环中调用inputstream函数来read
函数,这样它总是从其他设备读取数据,以便每当其他设备发送消息时,这个读取函数就会返回这个消息。
BluetoothChatService还有一个write
方法,它将byte[]
作为input,并在连接的线程上调用写入方法。
mChatService.write("your message".getByte());
连接线程中的写入方法只是把这个字节数据写到另一个设备的输出stream。
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上调用write函数,并处理您将在其他设备上收到的消息。
Android开发者页面包含教程并解释如何使用蓝牙function:
我希望这有帮助。
有一个很好的开源项目,告诉你如何处理Android设备和embedded式蓝牙设备之间的通信。
由于OP还没有接受任何答案,我会提供一些示例应用程序连接到特定的设备。 我不担保代码示例的质量,但是如果您正在寻找一些“真正的”代码 – 就连接到传感器设备的应用程序而言,它会从中读取数据,并可能写入该设备,这些可能有所帮助:
AndroiDAQ是一个原型数据采集应用的板子。 生成器Rick Fluck在Github上提供了一个示例,开源Android应用程序。 查找文件AndroiDAQService.java。 底部的Run()方法显示从DAQ读取和写入。 (YMMV。完整的应用程序可以从应用程序商店免费下载,我们发现它经常崩溃,但这可能是我们的DAQ板子经常会输出无关的输出,在我们自己的应用程序中,基于Rick的例子,我们处理奇怪的额外字符,不要因为这个原因崩溃。)
德州仪器(TI)出售一种便宜的蓝牙传感器标签(SensorTag),并在其上安装less量embedded式传感器。 他们提供了一个免费的SDK来处理标签,而IIRC则包含了Android和iOs应用程序的源代码。 当你search的时候要小心,看起来,自从我们买了我们以后,他们已经推出了一个名字相同的新设备,使用低能量的蓝牙智能技术,这与“传统”的蓝牙技术截然不同。