作为Android编程的初学者,我有一个问题:
我想从连接到微处理器的蓝牙/串行模块接收数据(两个字节).这些数据应该打印到屏幕上,并且每秒更新一次.我已经发现了这个:How to prevent Android bluetooth RFCOMM connection from dying immediately after .connect()?
哪个应该是工作代码,但什么也没发生.
我将mac地址更改为00:11:12:05:03:67,这应该与我的蓝牙模块相对应.
我是否完全朝着错误的方向前进?我想我想要的是非常基本的:只需通过蓝牙进行简单的单向数据传输.
任何想法都将非常感激.
最好的祝愿,
凯文
解决方法:
你在那里提到的问题非常有用,因为它为通常调用.createRfcommSocketToServiceRecord()无法工作的情况提供了一种解决方法.我个人在我正在做的项目中使用了该解决方案.我做的是先尝试.createRfcommSocketToServiceRecord()调用,如果失败,我的代码会尝试连接.getClass().getMethod(“createRfcommSocket”,new Class [] {int.class});解决方法.在尝试了许多蓝牙到串行PCB之后,其中一些往往有点’笨拙’而后一种反射方法在.createRfcommSocketToServiceRecord()没有时会起作用.
但是……虽然你引用的那个问题确实提供了一个非常有用的紧凑代码,但我认为它不是你开始的最佳位置.你应该开始的地方是Android’s Bluetooth documentation,它解释了整个过程非常好,包括如何使用单独的线程来处理发现,连接等.事实上,开始使用Bluetooth Chat source code非常容易.使用它,你可以起床并且非常快速地运行并连接到蓝牙串行模块.您只需确保将UUID更改为串行端口配置文件(SPP)所需的UUID:
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
希望这足以让一个简单的应用程序与您的蓝牙串行模块通信.蓝牙聊天示例应用程序还为您提供了处理设备发现,配对和所有好东西的对话框,因此您不必像以前那样在设备的MAC地址中乱码.
如果您在连接时遇到问题,那么您需要具体了解实际发生的情况;即,您正在获得什么例外,等等.