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

  1. 有没有办法在Android中始终启用蓝牙(我的应用程序中可能有一个很长的设备发现阶段)?据我所知,默认值是120s的倒计时。

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

有帮助吗?

解决方案

现在,Android 2.0 API中提供了蓝牙实施功能。 请参阅这个

其他提示

如果您唯一需要考虑的是长时间的发现延迟(“电池续航时间”),那么启用蓝牙始终开启可能不是一个好的决定。

对于第三方蓝牙API,我唯一听说过的是 iAnywhere Blue SDK (来自Sybase,非免费,仅提供评估版本),其中涵盖了将来从 system / bluetooth bluez支持的一些功能包。

根据Android的蓝牙路线图,大多数长期等待的东西,如Java API,蓝牙2.1 + EDR将在未来的某个时刻实施。

祝你的项目好运。

在2.3.6上我可以通过延迟0:

来保持设备始终可见
Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);

Linux上的 Bluez 堆栈是一个开源实现。它也可以在Windows上使用,但在Linux上API更加完善。

当你说“让蓝牙始终开启”时,你的意思是,总是试图发现其他设备吗?

大多数蓝牙芯片都采用深度睡眠模式,芯片大部分处于关闭状态,只需检查任何已建立的链路上的活动。当您希望它执行某些操作(发现,建立连接)或现有链接上有活动时,它只会唤醒全功率。

是的,它比蓝牙完全关闭时使用更多的电池电量,但它不是一个完整的吸血鬼。

 private void ensureDiscoverable() {
    if(D) Log.d(TAG, "ensure discoverable");
    if (mBluetoothAdapter.getScanMode() !=
        BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
        startActivity(discoverableIntent);
    }

http://developer.android.com/reference/android/蓝牙/ BluetoothAdapter.html#ACTION_REQUEST_DISCOVERABLE

BlueCove 是一个针对Java的开源蓝牙实现。

它可以在很多不同的机器上运行,如果正确的话,潜伏在某处的Android兼容版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top