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

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

问题:

  • Android将发现限制在300秒内。
  • 因为我的应用程序devise为在后台运行而不打扰用户,所以我不能每隔300秒就要求用户重新启用发现function。
  • 据我所知 ,没有办法通过Android的GUI来增加时间。 一些消息来源称这是一个安全function,其他人称这是一个错误。 两者都可能有一些事实

我在试着/试过了:

  • 我试图编辑一个稳定版本的cyanogenmod来closures发现定时器(这是可能的;有一个configuration文件需要改变一个单一的数字)。 这是行不通的,因为我对最终的软件包有validation问题。
  • 在过去的一周里,我下载了这个cyanogenmod源代码 ,更换了一个相关的类,希望它能使蓝牙无限期地被发现,并尝试重新编译。 这是行不通的,因为(a)repo经常被改变,导致不能编译的不稳定的代码库(OR,可能是因为我错误地使用了它;只是因为它看起来是代码的错(b)回购决定定期“忽略”我(但并不总是,因为我之前已经获得了代码基础!),回答我的同步问题/连接尝试与:

    致命的:远端意外挂断

正如你所想的那样,上述两个问题是有问题的,而且很令人沮丧。
更多信息:

  • 我通过cyanogenmod(v5我相信)运行Android 2.1。 这意味着电话也扎根了。
  • 我有一个开发者手机,这意味着引导程序被解锁。
  • 我的手机是HTC Magic(32B)。

大问题:

  • 我如何使Android在Android上无限期地发现?

Solutions Collecting From Web of "使Android 2.1上的蓝牙无限期发现"

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

具体来说,下一段最后一句:

启用可发现性
如果要使本地设备可被其他设备发现,请使用ACTION_REQUEST_DISCOVERABLE操作Intent调用startActivityForResult(Intent, int) 。 这将通过系统设置发出请求以启用可发现模式(不停止您的应用程序)。 默认情况下,设备将在120秒内变为可发现状态。 您可以通过添加EXTRA_DISCOVERABLE_DURATION Intent extra来定义不同的持续时间。 应用程序可以设置的最长持续时间为3600秒,值为0意味着设备始终可被发现。

所以,这应该工作:

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

如果您签出BluetoothAdapter类

你会发现隐藏的方法:

 public void setDiscoverableTimeout(int timeout) 

现在你只需要找出如何使用它。 您必须执行方法调用才能这样做。