使Android 2.1上的蓝牙无限期可被发现

Dyl*_*les 7 android bluetooth

我正在研究涉及蓝牙和Android操作系统的研究项目.我需要无限期地发现蓝牙,以便项目继续进行.

问题:

  • Android将发现限制为300秒.
  • 由于我的应用程序设计为在后台运行而不会打扰用户,因此我无法每隔300秒让用户重新发现可发现性.
  • 据我所知,没有办法通过Android的GUI增加时间.一些消息来源称这是一个安全功能,其他人称这是一个错误.两者都可能有一些道理......

我正在尝试/尝试过:

  • 我正在尝试编辑cyanogenmod的稳定版本以关闭可发现性计时器(这是可能的;有一个配置文件需要更改一个数字).这不起作用,因为我对生成的包有验证问题.
  • 在过去的一周里,我下载了cyanogenmod源代码,改变了一个相关的类,希望它可以无限期地发现蓝牙,并试图重新编译.这不起作用,因为(a)repo经常被更改,导致不稳定的代码库无法编译(或者,可能是我错误地使用它;只是因为它看起来像是许多代码的错误实例并不意味着我应该把它归咎于我遇到的所有问题!)和(b)repo决定定期"忽略"我(但并不总是,因为我之前已经获得了代码库!),回复我的同步/连接尝试:

    致命:远程端意外挂断

正如您可能想象的那样,上述两个问题是有问题的,并且处理起来非常令人沮丧.
更多信息:

  • 我通过cyanogenmod运行Android 2.1(我相信v5).这意味着手机也已植根.
  • 我有一个开发人员手机,这意味着引导加载程序已解锁.
  • 我的手机是HTC Magic(32B).

大问题:

  • 如何在Android上无限制地发现蓝牙?

gym*_*hoe 8

请参阅以下链接:http: //developer.android.com/guide/topics/wireless/bluetooth.html#ConnectingDevices

具体而言,下段中的最后一句:

启用可发现性
如果您希望本地设备可被其他设备发现,请startActivityForResult(Intent, int)使用ACTION_REQUEST_DISCOVERABLEIntent操作进行调用.这将通过系统设置发出启用可发现模式的请求(不停止您的应用程序).默认情况下,设备将在120秒内被发现.您可以通过添加EXTRA_DISCOVERABLE_DURATIONIntent extra 来定义不同的持续时间.应用程序可以设置的最长持续时间为3600秒,值为0表示设备始终可被发现.

所以,这应该工作:

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(discoverableIntent);
Run Code Online (Sandbox Code Playgroud)


Gun*_*ram 0

如果你查看BluetoothAdapter类

你会发现隐藏的方法:

public void setDiscoverableTimeout(int timeout)
Run Code Online (Sandbox Code Playgroud)

现在您只需了解如何使用它即可。您必须执行方法调用才能执行此操作。