蓝牙设备无法发现
我想在Android手机和远程设备之间建立蓝牙通信。远程设备的类是基本的,只是一个简单的蓝牙适配器。当我使用蓝牙扫描设备功能时,手机会识别来自不同类别(例如计算机,手机,蓝牙耳机)的设备,但不能识别此类设备。 我在三星Galaxy Theos和HTC Wildfire上试了一下Android 2.1,但两者的结果都一样。 手机制造商或Android可能会过滤某些类别的设备吗?否则,是否有另一种方法可以使该设备可被发现?蓝牙设备无法发现
在此先感谢。
lorenth
好的网络,对于那些谁想要开发Android上的蓝牙应用上的一些研究后(在2.1 Eclair的测试,我不知道其他版本),这似乎有些手机制造商决定忽略任何宣传自己为class 0×00的蓝牙设备,并且不允许连接,在发现时触发Intents,甚至将其列在蓝牙设置页面上。这里是什么样子的调试模式在Eclipse
DTUN_HCID Device [00:09:EF:58:04:38] class is 0x00 - skip it
的logcat的部分我想它在三星Galaxy 3 TEOS和HTC野火。显然它在Nexus One上运行良好。谷歌停止销售它太糟糕了。如果你们中有些人在其他手机上测试过,并且有效,请告诉我们。
Lorenth
我已经测试蓝牙连接到一个串行(类0×00)的设备上的Android一些不同的风味,与这些结果:
的Android 2.1(橙色或O2,不能remmeber):对确定 东芝上网本运行的是Android 2.2:对确定 的HTC Desire,沃达丰(Vodafone),Android 2.2的:未能发现设备 的HTC Desire HD,沃达丰(Vodafone),Android 2.2的:未能发现设备
所以,很可能是一些手机公司有阻止d 0x00访问。我接触沃达丰a)澄清并b)说服他们尽可能解决这个问题。如果我得到任何有用的信息,我会发布。
大卫
嗨大卫。对不起,这是一段时间。感谢您的信息。自从上次以来,你有没有得到关于这方面的消息? – lorenth 2011-01-27 15:41:45
UPDATE:该解决方案依赖于访问来自您的应用程序中读取logcat的,所以不会在Android上的现代版本(>约3.0)工作。如果有人正在使用Android v2.x,请在这里留下更新的链接。
假设你正在写为您的手机应用程序,我写了解决此问题的作品类:
http://zornsoftware.codenature.info/blog/pairing-spp-bluetooth-devices-with-android-phones.html
我可以确认LG的Optimus One,也是三星Galaxy S(这两个Android 2.2)都遭受这个问题。我已经联系LG和三星有关它,并会回来我听到的任何结果。
嗨Bungle先生。好东西!感谢分享你的解决方案;)我没有想过要这样做!其实我在做Android的时候是Android手机的新手。所以我不得不改变我的蓝牙设备的类,使其工作!无论如何,我敢肯定这不是一个真正的错误,它是在代码中明确写入以避免0x00类的。我认为制造商通过重写代码而忽略了它。是什么原因?我不知道,但奇怪的是,Google和Nexus几乎是唯一一个没有这样做的人。如果你有他们的答案,让我们知道。谢谢。 – lorenth 2011-05-24 14:17:04
你可以请你分享你改变的班级,以便我们可以使用它吗?或者请更新您的答案并在此留言。 – 2016-02-09 17:55:07
@Bungle你的链接看起来不对,它会被重定向到http://talsit.info/,其中没有关于Android的东西 – 2016-07-22 13:33:01
我能够解决这个问题,而不是通过改变Android端的东西,而是通过改变蓝牙适配器的类。我知道这并不能解决被阻止的类0x00设备的原始问题,但至少你可以使用带有android的BT串口设备,尽管有bug。
我从eBay购买了蓝牙串口转换器(链接这里:http://www.ebay.co.uk/itm/Bluetooth-RS232-serial-Converter-Module-Adapter-Board-/190508188703?pt=LH_DefaultDomain_0&hash=item2c5b2c441f),正如所料,我的HTC Desire在默认配置中没有识别出它。
我不想尝试上面提到的Zorn软件的应用程序,因为有人报告说它搞乱了他们的HTC手机。相反,我从BT设备的AT命令数据表中发现,通过使用UART连接和终端程序,您可以更改设备的类号等参数。
我花了一段时间才发现无法使用蓝牙串行连接访问配置界面,而是必须使用设备上的物理RX和TX引脚。您还需要将名为“Key”的引脚连接到Vcc以激活命令模式。所以我使用了一个AVR串行编程器设备的RS232到UART接口来连接到RX/TX引脚,并使用Realterm作为终端程序。当我拥有正确的波特率38400时,这使得AT命令接口工作,并交换了我最初连接错误的RX和TX引脚。
我使用的发生器这里 http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html 获得有效的非零级数(I使用的对象传输/计算机/桌面工作站,这相当于0x100104),并将其与命令输入到该设备
at + class = 100104 \ r \ n
其中\ r \ n表示Enter(请参阅数据表)。
关闭BT适配器后,断开“钥匙”引脚并再次打开,我能够以正常方式将其与我的手机配对。数据传输也起作用。我再次使用AVR编程器的UART和Realterm向适配器的RX/TX引脚发送一些数据(ASCII世界中的Hello World消息)。在Android端,我使用了SENA Bterm应用程序来接收数据。
我希望这可以帮助别人用手机和嵌入式系统做有趣的事情。
您是否检查过您的远程设备是否可以discovarable?过去我曾遇到过蓝牙耳机的问题;它只需要按下正确的按钮即可公开显示。 – dorzey 2010-11-18 14:50:52
嗨dorzey,谢谢你回答我。这个没有按钮。这是一个非常基本的蓝牙适配器,由RJ45电缆供电。绿灯亮起,通电并因此可被其他设备看到。事实上,我尝试过一款内置J2ME的诺基亚3109,它可以毫无问题地识别远程设备。所以我认为这个问题不是来自远程设备。感谢您的帮助 – lorenth 2010-11-18 15:33:44
其他人有想法吗? – lorenth 2010-11-19 09:15:03