Android - 如何使蓝牙一直保持开启状态?

13

关于Android上蓝牙开发的两个问题:

  1. 在Android上是否有一种方法可以始终保持蓝牙处于打开状态(我的应用程序可能会有长时间的设备发现阶段)?据我所知,默认值是120秒的倒计时。

  2. 是否存在任何开源的蓝牙API实现?

6个回答

9

Android 2.0 API现在已经支持蓝牙实现。详情请参见此处此处


是的,我也看到了这个消息。终于可用了 :) - Tor-Morten
蓝牙在SDK中可用,但AVD不支持2.0 API(级别5),或者文档不是最新的:http://developer.android.com/guide/developing/tools/avd.html - Michaël
1
概述链接可能比其他两个链接更适合作为起点:http://developer.android.com/intl/zh-CN/guide/topics/wireless/bluetooth.html - RickNotFred

2

在2.3.6上,我可以通过将延迟设置为0来始终保持设备可见:

Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);

2
启用蓝牙始终保持开启,如果您唯一关心的是长时间发现延迟(从电池寿命的角度来看),可能不是一个好决定。
至于第三方蓝牙API,我听说的唯一一件事是iAnywhere Blue SDK(来自Sybase,非免费,仅提供评估版),它涵盖了一些功能,这些功能将在未来从system/bluetoothbluez软件包中支持。
根据Android的Bluetooth路线图,大多数期待已久的东西,如Java API、蓝牙2.1 + EDR将在未来的某个时候实现。
祝你的项目好运。

感谢您的电池建议,但在项目的这个阶段,我只关心不间断的蓝牙连接,对电池并不关心 :) - Tor-Morten

1

这并不总是开启的(或者像原始提问者所说的那样可发现),这会提示用户确认。 - Tiago
1
我们无法让Android设备始终保持可见,但我们可以将其时间从120秒延长到300秒。 - deepak Sharma

1

Bluez栈在Linux上是一个开源的实现。它也可用于Windows,但Linux上的API更完整。

当你说“让蓝牙始终保持开启状态”时,你是指始终尝试发现其他设备吗?

大多数蓝牙芯片都有深度睡眠模式,在该模式下,芯片基本处于关闭状态,只会检查任何已建立链接上的活动。当你想要进行某些操作(如发现、建立连接)或者现有的链接上有活动时,它才会从深度睡眠中唤醒到全功率。

是的,它使用的电池电量比如果完全关闭蓝牙要多,但它不是一个完全的能耗吸血鬼。


是的,始终开启意味着持续客户端发现。安卓系统的“问题”是默认的120秒倒计时。这个时间可以改变吗?比如说改成600秒? - Tor-Morten

0

BlueCove 是 Java 的开源蓝牙实现。

它可以在许多不同的机器上运行,如果正确的话,还有一个兼容 Android 版本潜伏在某个地方。


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