简单的蓝牙数据接收器Android

时间:2012-02-06 17:12:15

标签: android bluetooth

作为Android编程的初学者,我有一个问题: 我想从连接到微处理器的蓝牙/串行模块接收数据(两个字节)。这些数据应该打印到屏幕上,并且每秒更新一次。我已经发现了这个:How to prevent Android bluetooth RFCOMM connection from dying immediately after .connect()? 哪个应该是工作代码,但什么也没发生。 我将mac地址更改为00:11:12:05:03:67,这应该与我的蓝牙模块相对应。

我是否完全朝着错误的方向前进?我想我想要的是非常基本的:只需通过蓝牙进行简单的单向数据传输。

非常感谢任何想法。

祝福,

凯文

1 个答案:

答案 0 :(得分:5)

您提到的问题非常有用,因为它为通常调用.createRfcommSocketToServiceRecord()无效的情况提供了一种解决方法。我个人在我正在做的项目中使用了该解决方案。我的工作是首先尝试.createRfcommSocketToServiceRecord()调用,如果失败,我的代码会尝试连接.getClass().getMethod("createRfcommSocket", new Class[]{int.class});解决方法。在尝试了许多蓝牙到串行PCB之后,其中一些往往有点“笨拙”,而后一种反射方法在.createRfcommSocketToServiceRecord()没有时会起作用。

然而 ...虽然你引用的那个问题确实提供了一个非常有用的紧凑代码,但我认为这不是你开始的最佳位置。你应该开始的地方是Android's Bluetooth documentation,这非常好地解释了整个过程,包括如何使用单独的Threads来处理发现,连接等。事实上,开始使用{非常容易{3}}。使用它,您可以非常快速地启动并运行并连接到蓝牙串行模块。您只需确保将UUID更改为串行端口配置文件(SPP)所需的UUID:

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

希望有一个简单的应用程序可以与您的蓝牙串行模块通信。蓝牙聊天示例应用程序还为您提供了处理设备发现,配对和所有好东西的对话框,因此您不必像以前那样在设备的MAC地址中乱码。

如果您在连接时遇到问题,那么您需要具体了解实际发生的情况;即,您正在获得什么例外,等等。