Android 安卓-如何使蓝牙始终开启?

Android 安卓-如何使蓝牙始终开启?,android,bluetooth,Android,Bluetooth,关于Android上蓝牙开发的两个问题: 有没有一种方法可以让蓝牙在安卓系统中始终处于开启状态(我的应用程序中可能有一个很长的设备发现阶段)?据我所知,默认值是从120秒开始倒计时 是否存在任何开源蓝牙API实现 如果您唯一关心的是长发现延迟(“电池寿命”)的话,那么让蓝牙始终处于开启状态可能不是一个好的决定 至于第三方蓝牙API,我唯一听说的是(来自Sybase,不是免费的,只有评估版可用),它涵盖了一些功能,这些功能将来将从system/Bluetooth和bluez软件包中得到支持 根据安

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

  • 有没有一种方法可以让蓝牙在安卓系统中始终处于开启状态(我的应用程序中可能有一个很长的设备发现阶段)?据我所知,默认值是从120秒开始倒计时

  • 是否存在任何开源蓝牙API实现


  • 如果您唯一关心的是长发现延迟(“电池寿命”)的话,那么让蓝牙始终处于开启状态可能不是一个好的决定

    至于第三方蓝牙API,我唯一听说的是(来自Sybase,不是免费的,只有评估版可用),它涵盖了一些功能,这些功能将来将从system/Bluetooth和bluez软件包中得到支持

    根据安卓的说法,大多数等待已久的东西,比如Java API、Bluetooth 2.1+EDR,都将在未来某个时候实现

    祝你的项目好运。

    Linux上的堆栈是一个开源实现。它在Windows上也可用,但在Linux上API要完整得多

    当你说“使蓝牙始终处于开启状态”时,你的意思是,总是试图发现其他设备吗

    大多数蓝牙芯片都有深度睡眠模式,在这种模式下,芯片大部分处于关闭状态,只需打开一个窗口来检查任何已建立链接上的活动。只有当您希望它执行某些操作(发现、建立连接)或在现有链接上有活动时,它才会完全启动

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

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


    它可以在很多不同的机器上工作,如果正确的话,可能会有一个与Android兼容的版本潜伏在某处。

    蓝牙实现现在可以在Android 2.0 API中使用。 见和


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

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

    感谢您对电池的建议,但在项目的这个阶段,我不关心电池,只关心持续的蓝牙:)是的,始终打开我的意思是持续的客户端发现。android的“问题”是默认的120秒倒计时。这是可以改变的吗?比如说600秒?是的,我也看到了新闻。最终可用:)SDK中有蓝牙功能,但AVD不支持2.0 API(第5级),或者文档不是最新的:概述链接可能比其他两个链接更好:它并不总是打开(或者按照原始询问者的意思是可以发现),这会提示用户确认。我们无法让设备在android中始终可见,但我们可以将其时间从120秒延长到300秒。
    Intent di = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    di.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);