安卓蓝牙示例

57

有没有人能给我提供Android 蓝牙通信教程链接或提示?请不要告诉我参考BluetoothChat示例,我只能理解如何发现和连接设备,但不知道如何通过蓝牙发送和接收数据。

实际上,我正在开发一个Android和嵌入式蓝牙设备项目。 请帮帮我。


Android开发者页面有教程并解释了如何使用蓝牙功能:希望这可以帮到你。 - Luke Taylor
我想最好通过这个教程来了解蓝牙连接:http://mobile.tutsplus.com/tutorials/android/android-quick-look-bluetoothadapter/。还有这个链接:http://luugiathuy.com/2011/02/android-java-bluetooth/,以及这个链接:http://code.google.com/p/android-bluetooth-touchpad/wiki/FrameworkTutorial :) - MBMJ
我已经研究过了,我可以发现设备并连接它们,但如何在蓝牙上发送和接收数据呢? - Pratik
2
你可以基于BluetoothChat示例来发送数据。如果你查看代码,文本消息字符串在通过蓝牙发送之前被转换为byte[]。因此,将你的数据转换为byte[],然后发送它。 - Win Myo Htet
在我看来,聊天示例只适用于聊天或稍微快一点的通信。当你需要每秒发送100多条消息时,我不确定它是否有用。 - Ewoks
有一个很好的开源项目可以向您展示如何处理Android设备和嵌入式蓝牙设备之间的通信。https://github.com/akexorcist/Android-BluetoothSPPLibrary - ifeegoo
1个回答

11

像其他人建议您进行蓝牙通信一样,我也使用了以下链接。

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

重要的是你只需要一个名为BluetoothChatService.java的类。

该类具有以下线程:

  1. 接受
  2. 连接中
  3. 已连接

当您调用BluetoothChatService的start函数时:

mChatService.start();

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

现在当您调用

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

这里的第一个参数是设备对象,您可以从配对设备列表中获取该对象,或者在扫描设备时,您将得到范围内的所有设备,可以将该对象传递给此函数,第二个参数是布尔值,用于建立安全或非安全连接。

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

当找到这样的设备时,接受线程和连接线程都将调用BluetoothChatService中的connected函数:

connected(mmSocket, mmDevice, mSocketType);

这种方法在两个设备中启动连接的线程: 使用此套接字对象,连接的线程获取与其他设备的输入和输出流。 并在while循环中调用read函数,以便始终尝试从另一个设备读取数据, 因此每当另一个设备发送消息时,该读取函数就会返回该消息。

BluetoothChatService还具有write方法,它以byte []作为输入,并调用连接的线程上的写入方法。

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的“write”函数,并处理在另一个设备上接收到的消息即可。


3
有人遇到过这个聊天服务的问题吗?它无法连接设备,甚至连接后立即断开了吗? - Jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接