Questions tagged «bluetooth»

蓝牙是一项全球开放的无线技术标准,用于在短距离(固定距离和移动设备)之间交换数据(使用短波长无线电传输),从而创建具有高度安全性的个人局域网(PAN)。

3
启动iOS模拟器时,蓝牙耳机的音乐质量下降
情况有点像这样: 我正在对Xcode进行编程,同时在我的蓝牙耳机上听音乐...您知道要封锁世界。 然后,我去在iOS模拟器中启动我的应用程序,BOOM突然间,我的水晶般清晰的音乐变得乱七八糟,质量超低,就像在2个街区之外的浴缸中播放……在1940年代。 注意:如果我在笔记本电脑或电影院的显示器上播放音乐并启动SIM卡,则不会降低质量。它似乎完全是Sim-> Bluetooth问题。 问题不仅仅是烦人的。因为经常在停止模拟器后,bathtub脚的浴缸会继续播放高质量的音乐。要解决此问题,我必须在OSX中打开声音首选项,然后短暂切换回笔记本电脑的声音,然后再切换回蓝牙耳机。 这很重要,因为我每天要启动模拟器50次,并且每次都必须执行此切换操作,并且还要听40年代单声道火腿收音机质量的音乐。 供您参考,我使用的耳机是Plantronics BackBeat Pro,并且我的固件是最新的。我使用的是OSX 10.11.4和Xcode 7.3 ...,但此问题在所有版本中均已存在2年以上。你能救我1940年代吗?

5
Android 4.3蓝牙低功耗不稳定
我目前正在开发将使用低功耗蓝牙的应用程序(在Nexus 4上进行测试)。在开始使用Android 4.3中的官方BLE API之后,我注意到,第一次连接设备后,我很少能够再次成功连接到该设备或任何其他设备或与之通信。 遵循此处的指南,我可以成功连接到设备,扫描服务和特征以及读取/写入/接收通知,而不会出现任何问题。但是,在断开连接并重新连接后,我通常无法扫描服务/特性或无法完成读取/写入。我在日志中找不到任何可以指示这种情况发生的原因。 一旦发生这种情况,我必须先卸载应用程序,禁用蓝牙并重新启动手机,然后手机才能再次开始工作。 每当设备断开连接时,请确保在BluetoothGatt对象上调用close()并将其设置为null。有什么见解吗? 编辑: 日志转储:对于这些日志,我扎根了手机,并提高了/etc/bluetooth/bt_stack.conf中相关项目的跟踪级别 成功连接 -重新启动手机并安装应用程序后的首次尝试。我能够连接,发现所有服务/特征以及进行读/写。 尝试失败1-这是与上面的成功连接断开连接后的下一次尝试。看来我能够发现特征,但是第一次读取尝试返回了一个空值,此后不久就断开了连接。 尝试失败2-我什至无法发现服务/特征的示例。 编辑2: 我尝试连接的设备基于TI的CC2541芯片。我获得了TI SensorTag(也基于CC2541)来玩耍,并发现TI 昨天为SensorTag 发布了一个Android应用。但是,这个程序有同样的问题。我在其他两个Nexus 4上进行了测试,结果相同:第一次或第二次成功连接SensorTag,但此后(根据日志)未能发现服务,从而导致各种崩溃。我开始怀疑这块特定的芯片是否有问题?

6
什么是iBeacon蓝牙配置文件
我想用一些蓝牙低功耗开发套件来创建自己的iBeacon。苹果尚未发布iBeacon的规范,但是一些硬件开发人员已经从AirLocate示例代码中逆向工程了iBeacon,并开始销售iBeacon开发套件。 那么什么是iBeacon蓝牙配置文件? 低功耗蓝牙将GATT用于LE配置文件服务发现。因此,我认为我们需要了解iBeacon属性的属性句柄,属性类型,属性值,以及属性权限。因此,对于UUID为E2C56DB5-DFFB-48D2-B060-D0F5A71096E0的iBeacon,主要值1和次要值1是什么,那么蓝牙GATT配置文件服务将是什么? 这是我在Apple论坛上的讨论以及通过文档做出的一些假设。 您只需查看蓝牙外围设备的配置文件服务(GATT)即可知道它是iBeacon。 主键和次键在此配置文件服务中的某处编码 以下是一些使用iBeacon开发套件的公司,这些公司似乎已经知道了这一点: http://redbearlab.com/ibeacon/ http://kontakt.io/ 希望我们会及时在Bluetooth.org上发布如下的个人资料:https : //www.bluetooth.org/en-us/specification/adopted-specifications

7
了解ibeacon距离
试图掌握一个基本概念,即与ibeacon(信标/蓝牙低功耗/ BLE)相隔如何工作。是否有关于ibeacon可以精确测量到多少的真实文档。可以说我在300英尺外...易北门有可能检测到这一点吗? 专门针对v4&。v5和iOS,但通常是任何BLE设备。 蓝牙频率和吞吐量如何影响这一点?信标设备能否增强或限制距离/改善底层BLE? 即 | Range | Freq | T/sec | Topo | |–—–––––––––––|–—––––––––––|–—––––––––––|–—––––––––––| Bluetooth v2.1 | Up to 100 m | < 2.481ghz | < 2.1mbit | scatternet | |-------------|------------|------------|------------| Bluetooth v4 | ? | < 2.481ghz | < 305kbit | mesh | |-------------|------------|------------|------------| Bluetooth v5 | ? …

8
如何在Android中以编程方式启用/禁用蓝牙
我想通过程序启用/禁用蓝牙。我有以下代码。 BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (!mBluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 但是此代码在SDK 1.5中不起作用。我该如何运作?
104 android  bluetooth 

16
IOException:读取失败,套接字可能已关闭-Android 4.3上的蓝牙
目前,当我在Nexus 7(2012)和Android 4.3(Build JWR66Y,我想是第二次4.3更新)上打开BluetoothSocket时,我正在尝试处理一个奇怪的异常。我已经看到了一些相关的帖子(例如/programming/13648373/bluetoothsocket-connect-throwing-exception-read-failed),但似乎没有一个解决此问题的方法。同样,如这些线程中所建议的那样,重新配对无济于事,并且不断尝试连接(通过愚蠢的循环)也无效。 我正在处理一个嵌入式设备(无名称的OBD-II汽车适配器,类似于http://images04.olx.com/ui/15/53/76/1316534072_254254776_2-OBD-II-BLUTOOTH-ADAPTERSCLEAR-CHECK-ENGINE- LIGHTS-WITH-YOUR-PHONE-Oceanside.jpg)。我的Android 2.3.7手机没有任何连接问题,并且同事的Xperia(Android 4.1.2)也可以使用。另一个Google Nexus(我不知道是“一个”还是“ S”,但不是“ 4”)在Android 4.3上也失败了。 这是连接建立的代码片段。它在服务内创建的自己的线程中运行。 private class ConnectThread extends Thread { private static final UUID EMBEDDED_BOARD_SPP = UUID .fromString("00001101-0000-1000-8000-00805F9B34FB"); private BluetoothAdapter adapter; private boolean secure; private BluetoothDevice device; private List<UUID> uuidCandidates; private int candidate; protected boolean started; public ConnectThread(BluetoothDevice device, boolean secure) …

7
需要在Android 6.0上启用蓝牙低功耗扫描的位置
升级到Android 6.0版后,只有在设备上启用了定位服务后,蓝牙低功耗(BLE)扫描才起作用。请参阅此处以供参考:Android 6.0上的Bluetooth Low Energy startScan找不到设备 基本上,您需要为应用程序和电话启用权限。这是错误吗?在没有实际启用位置服务的情况下可以进行扫描吗?我不需要所有应用程序的位置。 编辑 我没有提到我正在使用API 21 startScan()中BluetoothLeScanner提供的方法。我可以接受此方法所需的课程和清单中的精细位置权限。我只是不希望我的应用程序的用户必须在其设备(GPS等)上启用位置服务才能使用我的应用程序。 以前,该startScan()方法将在手机上禁用位置服务的情况下运行并返回结果。但是,在棉花糖上,当未在电话上启用位置服务并且清单中仍包含课程/精确位置权限时,同一应用程序将“扫描”但无提示失败,并且不返回任何结果。

1
(Dis)将蓝牙设备与Windows.Devices.Bluetooth.Rfcomm(WP8.1)连接
在Windows Phone / Desktop 8.1上,连接和断开与蓝牙设备的连接已得到各种结果。我一直在使用Windows.Devices.Bluetooth.Rfcomm名称空间,并且尝试连接具有不同蓝牙版本/类别的多个设备。 1.2版(第1类和第2类) 2.0版(第1类和第2类) 2.1版(第1类和第2类) 在诺基亚Lumia 625和Lumia 635,Dell Latitude E6500和Dell Precision M6400上进行了测试。 每当我尝试连接到2.0或2.1设备时,都会出现问题。第一次尝试连接到每个设备时,一切都会顺利进行,并且连接将打开。当我随后关闭连接并重新连接设备时,故障就开始了。 在重新连接期间,连接将永远不会打开,调试器将抛出System.Exception: > Message: No further data is available. 另外,当连接失败时,即使我自己的应用程序终止了,Windows 8.1设备也会继续尝试自行(不成功)连接到蓝牙设备。有时Windows 8.1设备还将蓝牙设备显示为已连接,而该设备直观地显示它不再连接。重新连接蓝牙设备的唯一方法是取消配对并在Windows设备上关闭/重新启动蓝牙。 每当DeviceInformation连接失败后我尝试拨打新电话时,它将拒绝退回先前尝试连接的设备。 > Message: The service cannot be found in the specified name space. 奇怪的是,这1.2个设备运行良好。 清单文件: <m2:DeviceCapability Name="bluetooth.rfcomm"> <m2:Device Id="any"> <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/> </m2:Device> </m2:DeviceCapability> …

1
蓝牙免提客户端音量控制
我有一个Android设备充当使用hfp的免提客户端设备。 使用以下代码: 我能够接听电话,并且扬声器和麦克风按预期工作。 我的问题是我似乎无法控制音量。 我尝试使用以下代码行来找到正确的流,但是它们似乎都不起作用。 我HeadsetClientStateMachine在以下链接中的类1822行中跟踪了从电话发送到客户端的音量命令:lolipop的HeadsetClientStateMachine case EVENT_TYPE_VOLUME_CHANGED: if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) { mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI); mVgsFromStack = true; Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2); } 当我在电话上更改音量时,我确实看到了显示声音的更新值的日志,这意味着该setStreamVolume()方法正在被调用,但音量没有变化。 有谁知道是什么原因导致此问题? 编辑: 我仍在寻找答案,现在正在寻找音频HAL实施方案。我怀疑HAL和音频驱动程序之间的链接某种程度上是不正确的...我对底层实现不太了解,也不确定我应该寻找什么。

7
Android:蓝牙UUID如何工作?
我不明白蓝牙UUID表示什么。UUID是否表示协议(例如RFCOMM)?如果是这样,createRfcommSocketToServiceRecord()当方法在其名称中正确指定rfcomm时,为什么它们需要UUID?为什么BluetoothChat示例代码具有看似任意的硬编码UUID? 之所以出现我的问题,是因为按照这个问题,当运行4.0.4的设备尝试使用反射连接(连接到外部非Android设备)时,出现了空指针异常。但是,该问题的解决方案对我不起作用。UUID muuid = device.getUuids()[0].getUuid();引发异常。 编辑:通过按照此答案(使用UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");)对串行端口服务的UUID进行硬编码,我解决了该问题。 为什么我需要提供一个UUID来创建一个不安全的rfcomm套接字createInsecureRfcommSocketToServiceRecord(),,而不使用反射方法,我对此进一步感到困惑。 谁能理我?

3
Android设备可以充当iBeacon吗?
Android设备可以充当iBeacon并确定其他Android设备何时进入其范围吗?这些其他Android设备是否需要打开蓝牙? 如果客户进入我的商店,但他的设备上未安装我的应用程序,那么iBeacon可以工作,还是必须先安装该应用程序?每天都有如此多的客户来我们商店购物,但是如果他们没有安装我的应用程序,那么iBeacon概念是否有效?

2
嗅探/记录自己的Android蓝牙流量
我最近购买了通过蓝牙与Android手机/平板电脑连接的中文设备。由于没有适用于Windows / Linux的应用程序,因此我想创建一个供个人使用的应用程序。 通常,电话会连接到设备并交换一些数据。我将PC连接到设备,并查看了串行调试器,并设法发现了协议(仅一种方式)。电话仅向设备发送一个命令。但是这次我无法找出其中包含的内容。 是否有任何软件可以让我查看通过蓝牙发送的数据?我尝试反编译该应用程序,但它看起来确实不友好。 谢谢。

2
是否检测到BluetoothAdapter的状态更改?
我有一个带有按钮的应用程序,用于打开和关闭BT。我的代码如下: public void buttonFlip(View view) { flipBT(); buttonText(view); } public void buttonText(View view) { Button buttonText = (Button) findViewById(R.id.button1); if (mBluetoothAdapter.isEnabled() || (mBluetoothAdapter.a)) { buttonText.setText(R.string.bluetooth_on); } else { buttonText.setText(R.string.bluetooth_off); } } private void flipBT() { if (mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.disable(); } else { mBluetoothAdapter.enable(); } } 我叫按钮Flip,它会翻转BT状态,然后叫ButtonText,它应该更新UI。但是,我遇到的问题是,打开BT需要花费几秒钟的时间-在这几秒钟中,BT状态未启用,即使我的按钮在2秒钟内打开,我的按钮也会关闭蓝牙。 我STATE_CONNECTING在BluetoothAdapter android文档中找到了该常量,但是...我只是不知道如何使用它,无论是新手还是所有人。 因此,我有两个问题: 有没有一种方法可以将UI元素(例如按钮或图像)动态地绑定到BT状态,以便当BT状态更改时,按钮也将更改? …


4
在后台将iPhone作为iBeacon运行
是否可以将iOS 7设备作为Bluetooth LE外围设备(iBeacon)运行,并在后台做广告?我已经能够使用下面的代码在前台进行广告发布,并且可以从其他iOS设备上看到它,但是一旦我回到主屏幕,它便停止了广告发布。我确实在plist中添加了蓝牙外围设备背景模式,但这似乎无济于事,尽管我确实得到提示,说该设备希望在背景中使用蓝牙。我是在做错什么,还是在iOS 7中是不可能的? peripManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil]; - (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral { if (peripheral.state != CBPeripheralManagerStatePoweredOn) { return; } NSString *identifier = @"MyBeacon"; //Construct the region CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:identifier]; //Passing nil will use the device default power NSDictionary *payload = [beaconRegion peripheralDataWithMeasuredPower:nil]; //Start advertising …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.